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