diff options
author | Gianni Ceccarelli <dakkar@thenautilus.net> | 2011-11-09 14:45:36 +0000 |
---|---|---|
committer | Gianni Ceccarelli <dakkar@thenautilus.net> | 2011-11-09 14:45:36 +0000 |
commit | ef446585672c733e84c5c92d58b81e475706dc8c (patch) | |
tree | ada8c29e888c221af53251cf8489620e636e70e8 /Data-TagsAndRanges | |
parent | storage class for tags/ranges (diff) | |
download | data-multivalued-ef446585672c733e84c5c92d58b81e475706dc8c.tar.gz data-multivalued-ef446585672c733e84c5c92d58b81e475706dc8c.tar.bz2 data-multivalued-ef446585672c733e84c5c92d58b81e475706dc8c.zip |
more tests
Diffstat (limited to 'Data-TagsAndRanges')
-rw-r--r-- | Data-TagsAndRanges/t/ranges-setting.t | 60 | ||||
-rw-r--r-- | Data-TagsAndRanges/t/setting.t | 118 | ||||
-rw-r--r-- | Data-TagsAndRanges/t/simple-setting.t | 22 | ||||
-rw-r--r-- | Data-TagsAndRanges/t/tags-ranges-setting.t | 68 | ||||
-rw-r--r-- | Data-TagsAndRanges/t/tags-setting.t | 42 |
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(); |