summaryrefslogtreecommitdiff
path: root/Data-TagsAndRanges/t/tags-ranges-setting.t
diff options
context:
space:
mode:
Diffstat (limited to 'Data-TagsAndRanges/t/tags-ranges-setting.t')
-rw-r--r--Data-TagsAndRanges/t/tags-ranges-setting.t68
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();