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