CXC-PDL-Bin1D
view release on metacpan or search on metacpan
t/Bin1D/bin_on_index.t view on Meta::CPAN
};
};
my $error = $@;
$ctx->release;
die $error if $error;
return;
}
# create a regular set of stats which have the same imin and number of bins.
subtest 'regular' => sub {
my $nbins = 19;
my $imin = -9;
my $imax = $imin + $nbins - 1;
my %mk_pars = (
shape => [ 2, 3 ],
dset_imin => $imin,
dset_nbins => $nbins,
# force 1D stats to have same number of bins and imin
stats_imin => $imin,
stats_nbins => $nbins,
);
subtest 'in-bounds' => sub {
my $tdata = mk_nD_dataset( %mk_pars );
subtest 'nbins, imin' => sub {
test_bin(
data => $tdata,
params => {
nbins => $nbins,
imin => $imin,
},
);
};
test_range(
data => $tdata,
nbins => $nbins,
imin => $imin,
imax => $tdata->stats->imax,
# range=slice and range=flat are the same for this dataset.
range => [ 'slice', 'flat' ],
);
};
subtest 'out-of-bounds' => sub {
my @oob_types = qw(
start-end
end
nbins
start-nbins
);
for my $oob_type ( @oob_types ) {
subtest $oob_type => sub {
my $oob_imin = $imin + 2;
my $oob_imax = $imax - 3;
my $oob_nbins = $oob_imax - $oob_imin + 1;
my $tdata = mk_nD_dataset(
%mk_pars,
oob => $oob_type,
oob_imin => $imin + 2,
oob_imax => $imax - 3,
);
test_bin(
data => $tdata,
params => {
imin => $oob_imin,
nbins => $oob_nbins,
oob => $oob_type,
},
);
};
}
};
};
# this generates 1D data sets which have different nbins and imin
subtest 'subset' => sub {
my $nbins = 50;
my $imin = -9;
my %mk_pars = (
shape => [ 2, 3 ],
dset_imin => $imin,
dset_nbins => $nbins,
stats_nalloc => $nbins,
subset => 1,
);
subtest 'in-bounds' => sub {
my $tdata = mk_nD_dataset( %mk_pars );
# first, force nbins
subtest 'nbins, imin' => sub {
test_bin(
data => $tdata,
params => {
nbins => $tdata->stats->nbins,
imin => $tdata->stats->imin,
},
);
};
# now, let the range be dynamically determined
test_range(
data => $tdata,
nbins => $tdata->stats->nbins,
imin => $tdata->stats->imin,
imax => $tdata->stats->imax,
range => 'slice', # flat doesn't make sense for this comparison
);
};
subtest 'out-of-bounds' => sub {
my @oob_types = qw(
end
nbins
start-nbins
start-end
);
for my $oob_type ( @oob_types ) {
subtest $oob_type => sub {
# create a regular set of stats which have the same imin and number of bins.
my $tdata = mk_nD_dataset( %mk_pars, oob => $oob_type, );
my $stats = $tdata->stats;
my $oob = $tdata->stats->oob;
test_bin(
data => $tdata,
params => {
imin => $stats->oob_imin,
nbins => $stats->oob_nbins,
oob => $oob->type,
},
);
};
}
};
};
done_testing;
( run in 4.442 seconds using v1.01-cache-2.11-cpan-54e63673c56 )