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
|
use Test::More tests => 40;
BEGIN { use_ok('Number::Range') };
ok($range = Number::Range->new("10..100"));
ok($range->inrange(10) == 1);
ok($range->inrange(1000) == 0);
$range = Number::Range->new("10..50,60..100");
ok($range->inrange(10) == 1);
ok($range->inrange(55) == 0);
ok($range->inrange(75) == 1);
$range = Number::Range->new("10..100","150..200");
ok($range->inrange(10) == 1);
ok($range->inrange(125) == 0);
ok($range->inrange(155) == 1);
$range = Number::Range->new("-10..10");
ok($range->inrange(10) == 1);
ok($range->inrange(-10) == 1);
ok($range->inrange(0) == 1);
$range->addrange("20..30");
ok($range->inrange(25) == 1);
ok($range->inrange(10) == 1);
ok($range->inrange(15) == 0);
$range->delrange("-10..0");
ok($range->inrange(-10) == 0);
ok($range->inrange(10) == 1);
ok($range->inrange(25) == 1);
ok($range->inrange(10,25));
@test = $range->inrange(10,25,1000);
@rc = qw/1 1 0/;
is_deeply(\@rc, \@test);
$range = Number::Range->new("1..100,150..200");
$rangeformat = $range->range;
cmp_ok("1..100,150..200", 'eq', $rangeformat);
ok($range->size == 151);
$range = Number::Range->new("1,3,4,5,6");
ok($range->range eq "1,3..6");
$range = Number::Range->new("1,2,3,4,5,6");
ok($range->range eq "1..6");
ok($range->inrange("01"));
# Tests for large range
$range = Number::Range->new("0..99999999");
ok($range->inrange("1"));
ok($range->inrange("99999999"));
ok($range->inrange("09"));
ok($range->size == 100000000);
# Tests for rangeList function
$range = Number::Range->new("1..10","150..200","300..300000","999999");
@rangeList = $range->rangeList();
ok($rangeList[0][0] == 1);
ok($rangeList[0][1] == 10);
ok($rangeList[1][0] == 150);
ok($rangeList[1][1] == 200);
ok($rangeList[2][0] == 999999);
# Single entries will not have a second indice
ok($rangeList[2][1] == undef);
# Large ranges always end up at the end of the list because they are processed seperatly
ok($rangeList[3][0] == 300);
ok($rangeList[3][1] == 300000);
# Test rangeList with only a single large range
$range = Number::Range->new("300..300000");
@rangeList = $range->rangeList();
ok($rangeList[0][0] == 300);
ok($rangeList[0][1] == 300000);
|