summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianni Ceccarelli <dakkar@thenautilus.net>2011-11-09 14:45:36 +0000
committerGianni Ceccarelli <dakkar@thenautilus.net>2011-11-09 14:45:36 +0000
commitef446585672c733e84c5c92d58b81e475706dc8c (patch)
treeada8c29e888c221af53251cf8489620e636e70e8
parentstorage class for tags/ranges (diff)
downloaddata-multivalued-ef446585672c733e84c5c92d58b81e475706dc8c.tar.gz
data-multivalued-ef446585672c733e84c5c92d58b81e475706dc8c.tar.bz2
data-multivalued-ef446585672c733e84c5c92d58b81e475706dc8c.zip
more tests
-rw-r--r--Data-TagsAndRanges/t/ranges-setting.t60
-rw-r--r--Data-TagsAndRanges/t/setting.t118
-rw-r--r--Data-TagsAndRanges/t/simple-setting.t22
-rw-r--r--Data-TagsAndRanges/t/tags-ranges-setting.t68
-rw-r--r--Data-TagsAndRanges/t/tags-setting.t42
5 files changed, 192 insertions, 118 deletions
diff --git a/Data-TagsAndRanges/t/ranges-setting.t b/Data-TagsAndRanges/t/ranges-setting.t
new file mode 100644
index 0000000..1b92000
--- /dev/null
+++ b/Data-TagsAndRanges/t/ranges-setting.t
@@ -0,0 +1,60 @@
+#!perl
+use strict;
+use warnings;
+use Test::Most 'die';
+use Data::Printer;
+use Data::TagsAndRanges;
+
+my $obj = Data::TagsAndRanges->new();
+ok($obj,'constructor works');
+
+lives_ok {
+ $obj->set({
+ from => 10,
+ to => 20,
+ value => [1,2,3],
+ });
+} 'setting 10-20';
+lives_ok {
+ $obj->set({
+ from => 30,
+ to => 50,
+ value => [4,5,6],
+ });
+} 'setting 30-50';
+
+cmp_deeply($obj->get({at => 15}),
+ [1,2,3],
+ 'getting 15');
+cmp_deeply($obj->get({at => 10}),
+ [1,2,3],
+ 'getting 10');
+cmp_deeply($obj->get({at => 19.999}),
+ [1,2,3],
+ 'getting 19.999');
+dies_ok {
+ $obj->get({at => 20})
+} 'getting 20 dies';
+
+cmp_deeply($obj->get({at => 40}),
+ [4,5,6],
+ 'getting 40');
+cmp_deeply($obj->get({at => 30}),
+ [4,5,6],
+ 'getting 30');
+cmp_deeply($obj->get({at => 49.999}),
+ [4,5,6],
+ 'getting 49.999');
+dies_ok {
+ $obj->get({at => 50})
+} 'getting 50 dies';
+
+dies_ok {
+ $obj->get({at => 0})
+} 'getting 0 dies';
+
+dies_ok {
+ $obj->get({});
+} 'default get dies';
+
+done_testing();
diff --git a/Data-TagsAndRanges/t/setting.t b/Data-TagsAndRanges/t/setting.t
deleted file mode 100644
index 0eba1ef..0000000
--- a/Data-TagsAndRanges/t/setting.t
+++ /dev/null
@@ -1,118 +0,0 @@
-#!perl
-use strict;
-use warnings;
-use Test::Most 'die';
-use Data::Printer;
-use Data::TagsAndRanges;
-
-my $obj = Data::TagsAndRanges->new();
-ok($obj,'constructor works');
-
-sub clear_it {
- lives_ok { $obj->clear } 'clearing the object';
-}
-
-subtest 'no ranges or tags' => sub {
- clear_it;
-
- lives_ok {
- $obj->set({
- value => 1234,
- });
- } 'setting';
-
- cmp_ok($obj->get({}),'==',1234,
- 'getting');
-};
-
-subtest 'tags' => sub {
- clear_it;
-
- lives_ok {
- $obj->set({
- tag => 'tag1',
- value => 'a string',
- });
- } 'setting tag1';
- lives_ok {
- $obj->set({
- tag => 'tag2',
- value => 'another string',
- });
- } 'setting tag2';
-
- cmp_ok($obj->get({tag => 'tag1'}),
- 'eq',
- 'a string',
- 'getting tag1');
-
- cmp_ok($obj->get({tag => 'tag2'}),
- 'eq',
- 'another string',
- 'getting tag2');
-
- dies_ok {
- $obj->get({tag=>'no such tag'});
- } 'getting non-existent tag';
-
- dies_ok {
- $obj->get({});
- } 'default get dies';
-};
-
-subtest 'ranges' => sub {
- clear_it;
-
- lives_ok {
- $obj->set({
- from => 10,
- to => 20,
- value => [1,2,3],
- });
- } 'setting 10-20';
- lives_ok {
- $obj->set({
- from => 30,
- to => 50,
- value => [4,5,6],
- });
- } 'setting 30-50';
-
- cmp_deeply($obj->get({at => 15}),
- [1,2,3],
- 'getting 15');
- cmp_deeply($obj->get({at => 10}),
- [1,2,3],
- 'getting 10');
- cmp_deeply($obj->get({at => 19.999}),
- [1,2,3],
- 'getting 19.999');
- dies_ok {
- $obj->get({at => 20})
- } 'getting 20 dies';
-
- cmp_deeply($obj->get({at => 40}),
- [4,5,6],
- 'getting 40');
- cmp_deeply($obj->get({at => 30}),
- [4,5,6],
- 'getting 30');
- cmp_deeply($obj->get({at => 49.999}),
- [4,5,6],
- 'getting 49.999');
- dies_ok {
- $obj->get({at => 50})
- } 'getting 50 dies';
-
- dies_ok {
- $obj->get({at => 0})
- } 'getting 0 dies';
-
- note p $obj;
-
- dies_ok {
- $obj->get({});
- } 'default get dies';
-};
-
-done_testing();
diff --git a/Data-TagsAndRanges/t/simple-setting.t b/Data-TagsAndRanges/t/simple-setting.t
new file mode 100644
index 0000000..594e7d7
--- /dev/null
+++ b/Data-TagsAndRanges/t/simple-setting.t
@@ -0,0 +1,22 @@
+#!perl
+use strict;
+use warnings;
+use Test::Most 'die';
+use Data::Printer;
+use Data::TagsAndRanges;
+
+my $obj = Data::TagsAndRanges->new();
+ok($obj,'constructor works');
+
+lives_ok {
+ $obj->set({
+ value => 1234,
+ });
+} 'setting';
+
+cmp_ok($obj->get({}),'==',1234,
+ 'getting');
+
+lives_ok { $obj->clear } 'clearing the object';
+
+done_testing();
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();
diff --git a/Data-TagsAndRanges/t/tags-setting.t b/Data-TagsAndRanges/t/tags-setting.t
new file mode 100644
index 0000000..9b4a697
--- /dev/null
+++ b/Data-TagsAndRanges/t/tags-setting.t
@@ -0,0 +1,42 @@
+#!perl
+use strict;
+use warnings;
+use Test::Most 'die';
+use Data::Printer;
+use Data::TagsAndRanges;
+
+my $obj = Data::TagsAndRanges->new();
+ok($obj,'constructor works');
+
+lives_ok {
+ $obj->set({
+ tag => 'tag1',
+ value => 'a string',
+ });
+} 'setting tag1';
+lives_ok {
+ $obj->set({
+ tag => 'tag2',
+ value => 'another string',
+ });
+} 'setting tag2';
+
+cmp_ok($obj->get({tag => 'tag1'}),
+ 'eq',
+ 'a string',
+ 'getting tag1');
+
+cmp_ok($obj->get({tag => 'tag2'}),
+ 'eq',
+ 'another string',
+ 'getting tag2');
+
+dies_ok {
+ $obj->get({tag=>'no such tag'});
+} 'getting non-existent tag';
+
+dies_ok {
+ $obj->get({});
+} 'default get dies';
+
+done_testing();