summaryrefslogtreecommitdiff
path: root/Data-MultiValued/t/tags-ranges-setting.t
blob: 5f82a4e138c943fa5765a1ead8f68d798e6c3e30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!perl 
use strict;
use warnings;
use Test::Most 'die';
use Data::Printer;
use Data::MultiValued::TagsAndRanges;
 
my $obj = Data::MultiValued::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();