diff options
Diffstat (limited to 'Data-TagsAndRanges/t/tags-ranges-setting.t')
-rw-r--r-- | Data-TagsAndRanges/t/tags-ranges-setting.t | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Data-TagsAndRanges/t/tags-ranges-setting.t b/Data-TagsAndRanges/t/tags-ranges-setting.t new file mode 100644 index 0000000..ec9f837 --- /dev/null +++ b/Data-TagsAndRanges/t/tags-ranges-setting.t @@ -0,0 +1,68 @@ +#!perl +use strict; +use warnings; +use Test::Most 'die'; +use Data::Printer; +use Data::TagsAndRanges; + +my $obj = Data::TagsAndRanges->new(); +ok($obj,'constructor works'); + +my @tags = (undef,'tag1','tag2'); +my @ranges = ([10,20,2],[30,50,2]); + +sub _t { $_[0] ? ( tag => $_[0] ) : () } + +for my $tag (@tags) { + for my $range (@ranges) { + $obj->set({ + _t($tag), + from => $range->[0], + to => $range->[1], + value => $range->[2], + }); + } +} + +for my $tag (@tags) { + for my $range (@ranges) { + cmp_ok( + $obj->get({ + _t($tag), + at => ($range->[0]+$range->[1])/2, + }), + '==', + $range->[2], + "tag @{[ $tag // 'default' ]}, range @$range[0,1]", + ); + } +} + +for my $range (@ranges) { + dies_ok { + $obj->get({ + tag => 'not there', + from => $range->[0], + to => $range->[1], + }) + } "no such tag, range @$range[0,1]"; +} + +for my $tag (@tags) { + for my $range (@ranges) { + dies_ok { + $obj->get({ + _t($tag), + at => $range->[0]-1, + }) + } "tag @{[ $tag // 'default' ]}, out-of-range (left)"; + dies_ok { + $obj->get({ + _t($tag), + at => $range->[1], + }) + } "tag @{[ $tag // 'default' ]}, out-of-range (right)"; + } +} + +done_testing(); |