summaryrefslogtreecommitdiff
path: root/t/more-overlapping-ranges.t
diff options
context:
space:
mode:
Diffstat (limited to 't/more-overlapping-ranges.t')
-rw-r--r--t/more-overlapping-ranges.t79
1 files changed, 79 insertions, 0 deletions
diff --git a/t/more-overlapping-ranges.t b/t/more-overlapping-ranges.t
new file mode 100644
index 0000000..19e2fe5
--- /dev/null
+++ b/t/more-overlapping-ranges.t
@@ -0,0 +1,79 @@
+#!perl
+use strict;
+use warnings;
+use Test::Most 'die';
+use Data::Printer;
+use Data::MultiValued::Ranges;
+use Data::MultiValued::TagsAndRanges;
+
+sub test_it {
+ my ($obj) = @_;
+
+ $obj->set({
+ from=>10,
+ to=>20,
+ value=>1,
+ });
+ $obj->set({
+ from=>30,
+ to => 50,
+ value => 2,
+ });
+ $obj->set({
+ from=>15,
+ to => 35,
+ value => 3,
+ });
+ $obj->set({
+ from => undef,
+ to => 12,
+ value => 4,
+ });
+ $obj->set({
+ from => 40,
+ to => undef,
+ value => 5,
+ });
+
+ my %points = (
+ 1,4,
+ 9,4,
+ 10,4,
+ 11,4,
+ 12,1,
+ 13,1,
+ 14,1,
+ 15,3,
+ 19,3,
+ 20,3,
+ 30,3,
+ 34,3,
+ 35,2,
+ 39,2,
+ 40,5,
+ 50,5,
+ 200,5,
+ );
+ while (my ($at,$v) = each %points) {
+ cmp_ok($obj->get({at=>$at}),
+ '==',
+ $v,
+ "value at $at");
+ }
+}
+
+subtest 'ranges' => sub {
+ my $obj = Data::MultiValued::Ranges->new();
+ ok($obj,'constructor works');
+
+ test_it($obj);
+};
+
+subtest 'tags and ranges' => sub {
+ my $obj = Data::MultiValued::TagsAndRanges->new();
+ ok($obj,'constructor works');
+
+ test_it($obj);
+};
+
+done_testing();