示例#1
0
def test_parse_error():
    with pytest.raises(ParseError):
        s = intspan('7*99')
    with pytest.raises(ParseError):
        s = intspan('-4,5-4')
    with pytest.raises(ParseError):
        s = intspan('1-4,5-')
示例#2
0
def test_isdisjoint():
    s = intspan('1,3,5,7,9')
    t = intspan('33-44')
    u = intspan('1,3,99,299')
    assert s.isdisjoint(t)
    assert not s.isdisjoint(u)
    assert t.isdisjoint(u)
示例#3
0
def test_isdisjoint():
    s = intspan('1,3,5,7,9')
    t = intspan('33-44')
    u = intspan('1,3,99,299')
    assert s.isdisjoint(t)
    assert not s.isdisjoint(u)
    assert t.isdisjoint(u)
示例#4
0
def test_difference():
    s = intspan('1-8')
    t = intspan('2-5')
    assert s.difference(t) == intspan('1,6-8')
    assert t.difference(s) == intspan()

    assert s - t == s.difference(t)
    assert t - s == t.difference(s)
示例#5
0
def test_difference():
    s = intspan('1-8')
    t = intspan('2-5')
    assert s.difference(t) == intspan('1,6-8')
    assert t.difference(s) == intspan()

    assert s - t == s.difference(t)
    assert t - s == t.difference(s)
示例#6
0
def test_union():
    s = intspan('0-3,7')
    assert s.union('0-2') == s
    assert list(s.union('0-2')) == [0, 1, 2, 3, 7]
    assert list(s.union([99, 101])) == [0, 1, 2, 3, 7, 99, 101]
    assert s.union([99, 101]) == intspan('0-3,7,99,101')

    assert s | intspan('0-2') == s.union('0-2')
    assert s | [99, 101] == s.union('99,101')
示例#7
0
def test_union():
    s = intspan('0-3,7')
    assert s.union('0-2') == s
    assert list(s.union('0-2')) == [0, 1, 2, 3, 7]
    assert list(s.union([99, 101])) == [0, 1, 2, 3, 7, 99, 101]
    assert s.union([99, 101]) == intspan('0-3,7,99,101')

    assert s | intspan('0-2') == s.union('0-2')
    assert s | [99, 101] == s.union('99,101')
示例#8
0
def test_symmetric_difference():
    s = intspan('1-8')
    t = intspan('2-5')
    assert s.symmetric_difference(t) == intspan('1,6-8')
    assert t.symmetric_difference(s) == intspan('1,6-8')
    assert t.symmetric_difference(t) == intspan()

    assert s ^ t == s.symmetric_difference(t)
    assert t ^ s == t.symmetric_difference(s)
    assert t ^ t == t.symmetric_difference(t)
示例#9
0
def test_symmetric_difference():
    s = intspan('1-8')
    t = intspan('2-5')
    assert s.symmetric_difference(t) == intspan('1,6-8')
    assert t.symmetric_difference(s) == intspan('1,6-8')
    assert t.symmetric_difference(t) == intspan()

    assert s ^ t == s.symmetric_difference(t)
    assert t ^ s == t.symmetric_difference(s)
    assert t ^ t == t.symmetric_difference(t)
示例#10
0
def test_contains():
    s = intspan()
    assert 1 not in s
    assert 100 not in s
    assert 0 not in s

    t = intspan('1,10')
    assert 1 in t
    assert 10 in t
    assert 0 not in t
    assert 2 not in t
示例#11
0
def test_issuperset():
    s = intspan('0-3,7')
    assert s.issuperset('0-2')
    assert s.issuperset([0, 1, 3])
    assert not s.issuperset(range(6))
    assert not s.issuperset('0-6')

    assert s >= intspan('0-2')
    assert s >= intspan([0, 1, 3])
    assert not s >= range(6)
    assert not s >= intspan('0-6')
示例#12
0
def test_contains():
    s = intspan()
    assert 1 not in s
    assert 100 not in s
    assert 0 not in s

    t = intspan('1,10')
    assert 1 in t
    assert 10 in t
    assert 0 not in t
    assert 2 not in t
示例#13
0
def test_strict_super_or_subset():
    s = intspan('1,3,5,7,9')
    t = intspan('1,3,5')
    u = intspan('0,1,3,5')
    assert s > t
    assert not s > u
    assert t < s
    assert t < u
    assert u > t
    assert not s < u
    assert not s > u
示例#14
0
def test_strict_super_or_subset():
    s = intspan('1,3,5,7,9')
    t = intspan('1,3,5')
    u = intspan('0,1,3,5')
    assert s > t
    assert not s > u
    assert t < s
    assert t < u
    assert u > t
    assert not s < u
    assert not s > u
示例#15
0
def test_issuperset():
    s = intspan('0-3,7')
    assert s.issuperset('0-2')
    assert s.issuperset([0, 1, 3])
    assert not s.issuperset(range(6))
    assert not s.issuperset('0-6')

    assert s >= intspan('0-2')
    assert s >= intspan([0, 1, 3])
    assert not s >= range(6)
    assert not s >= intspan('0-6')
示例#16
0
def test_issubset():
    s = intspan('92,97,96,95,0,94')
    assert s.issubset('0-100')
    assert s.issubset(range(98))
    assert s.issubset(range(101))
    assert s.issubset('0, 92-100')
    assert s.issubset([0] + list(range(92, 101)))
    assert s.issubset(intspan('92,97,96,95,0,94'))
    assert s.issubset([0, 92, 94, 95, 96, 97])
    assert not s.issubset('0-10')
    assert not s.issubset(range(20))
    assert not s.issubset(range(95))
示例#17
0
def test_issubset():
    s = intspan('92,97,96,95,0,94')
    assert s.issubset('0-100')
    assert s.issubset(range(98))
    assert s.issubset(range(101))
    assert s.issubset('0, 92-100')
    assert s.issubset([0] + list(range(92, 101)))
    assert s.issubset(intspan('92,97,96,95,0,94'))
    assert s.issubset([0, 92, 94, 95, 96, 97])
    assert not s.issubset('0-10')
    assert not s.issubset(range(20))
    assert not s.issubset(range(95))
示例#18
0
def derangify(nodes):
    data_array = []
    for node in nodes:
        match = re.match('(.*)\[(.*)\](\..*)', node)
        if match:
            (prefix,nrange,suffix) = match.groups()
            length = 0
            for num in intspan(nrange):
                if length < len(str(num)): length = len(str(num))
            for num in intspan(nrange):
                data_array.append("%s%s%s" %(prefix,str(num).zfill(length),suffix))
        else:
            data_array.append(node)

    return data_array
示例#19
0
def test_pop():
    s = intspan('100-110')
    assert s.pop() == 100
    assert s.pop() == 101
    assert s.pop() == 102
    assert s.pop() == 103
    assert s.pop() == 104
    assert s.pop() == 105
    assert s == intspan('106-110')

    s = intspan('1-2')
    assert s.pop() == 1
    assert s.pop() == 2
    with pytest.raises(KeyError):
        s.pop()
示例#20
0
def test_pop():
    s = intspan('100-110')
    assert s.pop() == 100
    assert s.pop() == 101
    assert s.pop() == 102
    assert s.pop() == 103
    assert s.pop() == 104
    assert s.pop() == 105
    assert s == intspan('106-110')

    s = intspan('1-2')
    assert s.pop() == 1
    assert s.pop() == 2
    with pytest.raises(KeyError):
        s.pop()
示例#21
0
def derangify(nodes):
    data_array = []
    for node in nodes:
        match = re.match('(.*)\[(.*)\](\..*)', node)
        if match:
            (prefix, nrange, suffix) = match.groups()
            length = 0
            for num in intspan(nrange):
                if length < len(str(num)): length = len(str(num))
            for num in intspan(nrange):
                data_array.append("%s%s%s" %
                                  (prefix, str(num).zfill(length), suffix))
        else:
            data_array.append(node)

    return data_array
示例#22
0
def test_len():
    s = intspan('1,2,3,5,8,13,21')
    assert len(s) == 7
    s.pop()
    assert len(s) == 6
    s.clear()
    assert len(s) == 0
示例#23
0
def test_len():
    s = intspan('1,2,3,5,8,13,21')
    assert len(s) == 7
    s.pop()
    assert len(s) == 6
    s.clear()
    assert len(s) == 0
示例#24
0
def test_isub():
    s = intspanlist('1,3,5')
    s -= [3, 5]
    assert s == intspanlist('1')

    s = intspanlist('6-7, 1-10')
    s -= intspan('4-5,7,44')
    assert s == intspanlist('6,1-3,8-10')
示例#25
0
def test_add():
    s = intspanlist('1,3,5')
    orig_members = [1, 3, 5]
    assert s + set([1, 3]) == s
    assert s + [7, 8] == intspanlist('1,3,5,7-8')
    assert s + intspan('7-8') == intspanlist('1,3,5,7-8')
    assert s + intspanlist('7-8') == intspanlist('1,3,5,7-8')
    assert list(s) == orig_members
示例#26
0
def test_sub():
    s = intspanlist('1,3,5')
    orig_members = [1, 3, 5]
    assert s - set([1, 3]) == intspanlist('5')
    assert s - [7, 8] == intspanlist('1,3,5')
    assert s - [1, 7, 8] == intspanlist('3,5')
    assert s - intspan('1-2') == intspanlist('3,5')
    assert list(s) == orig_members
示例#27
0
def test_add():
    s = intspan('1-2')
    s.add('3,29')
    assert str(s) == '1-3,29'
    s.add('92,97,96,95,94')
    assert str(s) == '1-3,29,92,94-97'
    s.add(93)
    assert str(s) == '1-3,29,92-97'
    s.add('14')
    assert str(s) == '1-3,14,29,92-97'
示例#28
0
def test_add():
    s = intspan('1-2')
    s.add('3,29')
    assert str(s) == '1-3,29'
    s.add('92,97,96,95,94')
    assert str(s) == '1-3,29,92,94-97'
    s.add(93)
    assert str(s) == '1-3,29,92-97'
    s.add('14')
    assert str(s) == '1-3,14,29,92-97'
示例#29
0
def test_spaces():
    assert list(intspan('  ')) == []
    assert list(intspan('     1')) == [1]
    assert list(intspan('1, 4,  4 , 9')) == [1, 4, 9]
    assert list(intspan('1, 4, 4 , 9')) == [1, 4, 9]
    assert list(intspan('1, 4, 4 , 9')) == [1, 4, 9]
    assert list(intspan('   1, \n4,\n 4 , 9')) == [1, 4, 9]
示例#30
0
def test_spaces():
    assert list(intspan('  ')) == []
    assert list(intspan('     1')) == [1]
    assert list(intspan('1, 4,  4 , 9')) == [1, 4, 9]
    assert list(intspan('1, 4, 4 , 9')) == [1, 4, 9]
    assert list(intspan('1, 4, 4 , 9')) == [1, 4, 9]
    assert list(intspan('   1, \n4,\n 4 , 9')) == [1, 4, 9]
示例#31
0
def test_intersection():
    s = intspan('1-8')
    t = intspan('2-5')
    u = intspan('8,100')
    assert s.intersection(t) == intspan('2-5')
    assert t.intersection(u) == intspan()
    assert s.intersection(u) == intspan('8')

    assert s & t == s.intersection(t)
    assert t & u == t.intersection(u)
    assert s & u == s.intersection(u)
示例#32
0
def test_intersection():
    s = intspan('1-8')
    t = intspan('2-5')
    u = intspan('8,100')
    assert s.intersection(t) == intspan('2-5')
    assert t.intersection(u) == intspan()
    assert s.intersection(u) == intspan('8')

    assert s & t == s.intersection(t)
    assert t & u == t.intersection(u)
    assert s & u == s.intersection(u)
示例#33
0
def test_from_ranges():
    assert intspan.from_ranges([(1, 3), (5, 6)]) == intspan('1-3,5-6')
    assert intspan.from_ranges([(1, 3)]) == intspan('1-3')
    assert intspan.from_ranges([(2, 2)]) == intspan('2')
    assert intspan.from_ranges([]) == intspan()
示例#34
0
def test_from_range():
    assert intspan.from_range(1, 3) == intspan('1-3')
    assert intspan.from_range(2, 44) == intspan('2-44')
示例#35
0
def test_ranges():
    assert intspan().ranges() == []
    assert intspan('2').ranges() == [(2, 2)]
    assert intspan('1-3').ranges() == [(1, 3)]
    assert intspan('1-3,5-6').ranges() == [(1, 3), (5, 6)]
示例#36
0
def test_from_ranges():
    assert intspan.from_ranges([(1, 3), (5, 6)]) == intspan('1-3,5-6')
    assert intspan.from_ranges([(1, 3)]) == intspan('1-3')
    assert intspan.from_ranges([(2, 2)]) == intspan('2')
    assert intspan.from_ranges([]) == intspan()
示例#37
0
def test_repr_and_str():
    s = intspan('10-20,50-55')
    s.add(9)
    s.discard('15-40')
    assert str(s) == '9-14,50-55'
    assert repr(s) == "intspan('" + str(s) + "')"
示例#38
0
def test_basic():
    s = intspan()
    tests = ['', '1', '1-2', '1-3,9-10', '1-3,14,29,92-97']
    for t in tests:
        s = intspan(t)
        assert str(s) == t
示例#39
0
def test_basic():
    s = intspan()
    tests = ['', '1', '1-2', '1-3,9-10', '1-3,14,29,92-97']
    for t in tests:
        s = intspan(t)
        assert str(s) == t
示例#40
0
def test_complement():
    s = intspan('1,3,5-9')
    assert s.complement() == intspan('2,4')
    assert s.complement(high=10) == intspan('2,4,10')
    assert s.complement(high=14) == intspan('2,4,10-14')
    assert s.complement(low=0) == intspan('0,2,4')
    assert s.complement(low=0, high=14) == intspan('0,2,4,10-14')

    assert s.complement(-2, 5) == intspan('-2,-1,0,2,4')

    items = intspan('1-3,5,7-9,10,21-24')
    assert items.complement() == intspan('4,6,11-20')
    assert items.complement(high=30) == intspan('4,6,11-20,25-30')

    with pytest.raises(ValueError):
        intspan().complement()
示例#41
0
def test_parse_error():
    with pytest.raises(ParseError):
        s = intspan('7*99')
    with pytest.raises(ParseError):
        s = intspan('1-4,5-')
示例#42
0
def test_augmented_assignments():
    s = intspan('50-60')
    s |= intspan('10-20')
    assert s == intspan('10-20,50-60')
    s &= intspan('0-55')
    assert s == intspan('10-20,50-55')
    s -= intspan('16-20')
    assert s == intspan('10-15,50-55')
    s ^= intspan('10,99')
    assert s == intspan('11-15,50-55,99')

    t = intspan('50-60')
    t.update('10-20')
    assert t == intspan('10-20,50-60')
    t.intersection_update('0-55')
    assert t == intspan('10-20,50-55')
    t.difference_update('16-20')
    assert t == intspan('10-15,50-55')
    t.symmetric_difference_update('10,99')
    assert t == intspan('11-15,50-55,99')
示例#43
0
def test_ranges():
    assert intspan().ranges() == []
    assert intspan('2').ranges() == [(2, 2)]
    assert intspan('1-3').ranges() == [(1, 3)]
    assert intspan('1-3,5-6').ranges() == [(1, 3), (5, 6)]
示例#44
0
def test_equals():
    s = intspan('1,3,5,7,9')
    assert s == set([1, 3, 5, 7, 9])
示例#45
0
def test_universe():
    assert intspan().universe() == intspan()
    assert intspan('').universe() == intspan()
    assert intspan([]).universe() == intspan()

    assert intspan('1').universe() == intspan('1')

    assert intspan('1,3,5,7').universe() == intspan('1-7')

    s = intspan('1,3,5-9')
    assert s.universe() == intspan('1-9')
    assert s.universe(high=10) == intspan('1-10')
    assert s.universe(high=14) == intspan('1-14')
    assert s.universe(low=0) == intspan('0-9')
    assert s.universe(low=0, high=14) == intspan('0-14')
    assert s.universe(-2, 5) == intspan('-2-5')

    assert intspan('1-100').universe() == intspan('1-100')
示例#46
0
def test_negatives():
    assert list(intspan('-2')) == [-2]
    assert list(intspan('-2-1')) == [-2, -1, 0, 1]
    assert list(intspan('-2--1')) == [-2, -1]
示例#47
0
def test_copy():
    t = intspan('1,10')
    tt = t.copy()
    assert type(tt) == type(t)
    assert t == tt
    assert t is not tt
示例#48
0
def test_clear():
    s = intspan('1,2,3,5,8,13,21')
    s.clear()
    assert s == intspan()
示例#49
0
def test_repr_and_str():
    s = intspan('10-20,50-55')
    s.add(9)
    s.discard('15-40')
    assert str(s) == '9-14,50-55'
    assert repr(s) == "intspan('" + str(s) + "')"
示例#50
0
def test_universe():
    assert intspan().universe() == intspan()
    assert intspan('').universe() == intspan()
    assert intspan([]).universe() == intspan()

    assert intspan('1').universe() == intspan('1')

    assert intspan('1,3,5,7').universe() == intspan('1-7')

    s = intspan('1,3,5-9')
    assert s.universe() == intspan('1-9')
    assert s.universe(high=10) == intspan('1-10')
    assert s.universe(high=14) == intspan('1-14')
    assert s.universe(low=0) == intspan('0-9')
    assert s.universe(low=0, high=14) == intspan('0-14')
    assert s.universe(-2, 5) == intspan('-2-5')

    assert intspan('1-100').universe() == intspan('1-100')
示例#51
0
def test_remove():
    s = intspan('1-3,14,29,92-97')
    s.remove('2,92')
    assert str(s) == '1,3,14,29,93-97'
    with pytest.raises(KeyError):
        s.remove(1000)
示例#52
0
def test_complement():
    s = intspan('1,3,5-9')
    assert s.complement() == intspan('2,4')
    assert s.complement(high=10) == intspan('2,4,10')
    assert s.complement(high=14) == intspan('2,4,10-14')
    assert s.complement(low=0) == intspan('0,2,4')
    assert s.complement(low=0, high=14) == intspan('0,2,4,10-14')

    assert s.complement(-2, 5) == intspan('-2,-1,0,2,4')

    items = intspan('1-3,5,7-9,10,21-24')
    assert items.complement() == intspan('4,6,11-20')
    assert items.complement(high=30) == intspan('4,6,11-20,25-30')

    with pytest.raises(ValueError):
        intspan().complement()
示例#53
0
def test_equals():
    s = intspan('1,3,5,7,9')
    assert s == set([1, 3, 5, 7, 9])
示例#54
0
def test_augmented_assignments():
    s = intspan('50-60')
    s |= intspan('10-20')
    assert s == intspan('10-20,50-60')
    s &= intspan('0-55')
    assert s == intspan('10-20,50-55')
    s -= intspan('16-20')
    assert s == intspan('10-15,50-55')
    s ^= intspan('10,99')
    assert s == intspan('11-15,50-55,99')

    t = intspan('50-60')
    t.update('10-20')
    assert t == intspan('10-20,50-60')
    t.intersection_update('0-55')
    assert t == intspan('10-20,50-55')
    t.difference_update('16-20')
    assert t == intspan('10-15,50-55')
    t.symmetric_difference_update('10,99')
    assert t == intspan('11-15,50-55,99')
示例#55
0
def test_negatives():
    assert list(intspan('-2')) == [-2]
    assert list(intspan('-2-1')) == [-2, -1, 0, 1]
    assert list(intspan('-2--1')) == [-2, -1]
示例#56
0
def test_from_range():
    assert intspan.from_range(1, 3) == intspan('1-3')
    assert intspan.from_range(2, 44) == intspan('2-44')
示例#57
0
def test_clear():
    s = intspan('1,2,3,5,8,13,21')
    s.clear()
    assert s == intspan()
示例#58
0
def test_iteration():
    s = intspan('92,97,96,95,0,94')
    assert [item for item in s] == [0, 92, 94, 95, 96, 97]
    assert list(s) == [0, 92, 94, 95, 96, 97]
    assert set(s) == set([0, 92, 94, 95, 96, 97])
示例#59
0
def test_copy():
    t = intspan('1,10')
    tt = t.copy()
    assert type(tt) == type(t)
    assert t == tt
    assert t is not tt
示例#60
0
def test_alt_contstructors():
    assert intspan(range(100)) == intspan('0-99')
    assert intspan([1,3,5]) == intspan('1,3,5')
    assert intspan([5,3,1]) == intspan('1,3,5')
    assert intspan(intspan('1,3,5')) == intspan('1,3,5')