diff options
Diffstat (limited to 'Data-TagsAndRanges/t/setting.t')
-rw-r--r-- | Data-TagsAndRanges/t/setting.t | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/Data-TagsAndRanges/t/setting.t b/Data-TagsAndRanges/t/setting.t new file mode 100644 index 0000000..0eba1ef --- /dev/null +++ b/Data-TagsAndRanges/t/setting.t @@ -0,0 +1,118 @@ +#!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(); |