1# -*- perl -*-
2
3use strict;
4use Set::IntSpan 1.17;
5
6my $N = 1;
7sub Not { print "not " }
8sub OK
9{
10    my($function, $test) = @_;
11
12    $test ||= [];
13    for (@$test) { defined $_ or $_ = '<undef>' }
14    my $expected = pop @$test;
15
16    print "ok $N $function: @$test\t-> $expected\n";
17
18    $N++;
19}
20
21my @Ord_die =
22(
23 [ '(-0',  42, '<die>' ],
24);
25
26my @Ord_test =
27(
28 [ '-'	  	    ,  0, undef ],
29 [ '0'	  	    ,  0, 0     ],
30 [ '1'	  	    ,  0, undef ],
31 [ '1'	  	    ,  2, undef ],
32 [ '1,3-5'	    ,  0, undef ],
33 [ '1,3-5'	    ,  1, 0     ],
34 [ '1,3-5'	    ,  2, undef ],
35 [ '1,3-5'	    ,  3, 1     ],
36 [ '1,3-5'	    ,  4, 2     ],
37 [ '1,3-5'	    ,  5, 3     ],
38 [ '1,3-5'	    ,  6, undef ],
39 [ '1-)'  	    ,  0, undef ],
40 [ '1-)'  	    ,  1, 0     ],
41 [ '1-)'  	    ,  8, 7     ],
42 [ '1-5,11-15,21-25', 21, 10    ],
43);
44
45print "1..", @Ord_die + @Ord_test, "\n";
46
47for my $test (@Ord_die)
48{
49    my($run_list, $n) = @$test;
50
51    eval { Set::IntSpan->new($run_list)->ord($n) };
52    $@ or Not; OK("ord", $test);
53}
54
55for my $test (@Ord_test)
56{
57    my($run_list, $n, $i) = @$test;
58
59    equal(Set::IntSpan->new($run_list)->ord($n), $i) or Not; OK("ord", $test);
60}
61
62sub equal
63{
64    my($a, $b) = @_;
65
66    not defined $a and not defined $b or
67        defined $a and     defined $b and $a == $b
68}
69