예제 #1
0
    def test_bigint(self):
        l1 = range(1 << 100, (1 << 100) + 2)
        s = IntSet(l1)
        self.assertTrue(list(s) == list(l1))

        l1 = IntSet([1 << x for x in range(50)])
        self.assertTrue(len(l1) == 50)
예제 #2
0
    def test_xor(self):
        l1 = random.sample(range(10000), 2000)
        l2 = random.sample(range(10000), 2000)

        s1 = IntSet(l1)
        s2 = IntSet(l2)
        self.assertTrue(list(s1 ^ s2) == sorted(list(set(l1) ^ set(l2))))
        self.assertRaises(TypeError, lambda: s1 ^ [])
예제 #3
0
 def test_issuperset(self):
     l1 = random.sample(range(10000), 2000)
     l2 = random.sample(l1, 1000)
     s1 = IntSet(l1)
     s2 = IntSet(l2)
     self.assertTrue(s1.issuperset(s2))
     s2.add(100001)
     self.assertFalse(s1.issuperset(s2))
     self.assertRaises(TypeError, s1.issuperset, "123")
예제 #4
0
    def test_union(self):
        l1 = random.sample(range(10000), 2000)
        l2 = random.sample(range(10000), 2000)

        s1 = IntSet(l1)
        s2 = set(l1)

        self.assertTrue(
            list(s1.union(IntSet(l2))) == sorted(list(s2.union(l2))))
        self.assertTrue(list(s1.union(l2)) == sorted(list(s2.union(l2))))
        self.assertRaises(TypeError, s1.union, 1)
        self.assertRaises(TypeError, s1.union, ["1"])
예제 #5
0
    def test_difference(self):
        l1 = random.sample(range(10000), 2000)
        l2 = random.sample(range(10000), 2000)

        s1 = IntSet(l1)
        s2 = set(l1)

        self.assertTrue(
            list(s1.difference(IntSet(l2))) == sorted(list(s2.difference(l2))))
        self.assertTrue(
            list(s1.difference(l2)) == sorted(list(s2.difference(l2))))
        self.assertRaises(TypeError, s1.difference, 1)
        self.assertRaises(TypeError, s1.difference, ["1"])
예제 #6
0
    def test_intersection_update(self):
        l1 = random.sample(range(10000), 2000)
        l2 = random.sample(range(10000), 2000)

        s1 = IntSet(l1)
        s2 = set(l1)
        s1.intersection_update(l2)
        s2.intersection_update(l2)
        self.assertTrue(list(s1) == sorted(list(s2)))

        s1 = IntSet(l1)
        s1.intersection_update(IntSet(l2))
        self.assertTrue(list(s1) == sorted(list(s2)))

        self.assertRaises(TypeError, s1.intersection_update, 1)
        self.assertRaises(TypeError, s1.intersection_update, ["1"])
예제 #7
0
 def test_contains(self):
     l1 = random.sample(range(10000), 2000)
     l2 = random.sample(l1, 100)
     s = IntSet(l1)
     for x in l2:
         self.assertTrue(x in s)
     self.assertRaises(TypeError, lambda: "1" in s)
예제 #8
0
 def test_add(self):
     l1 = random.sample(range(10000), 2000)
     s = IntSet()
     for x in l1:
         s.add(x)
     self.assertTrue(list(s) == sorted(l1))
     self.assertRaises(TypeError, s.add, "1000000")
예제 #9
0
 def test_init(self):
     data = random.sample(range(10000), 2000)
     self.assertTrue(list(IntSet(data)) == sorted(data))
     self.assertTrue(list(IntSet(IntSet(data))) == sorted(data))
     self.assertTrue(list(IntSet()) == [])
     self.assertTrue(list(IntSet([])) == [])
     self.assertTrue(list(IntSet(set(range(10)))) == list(range(10)))
     self.assertTrue(list(IntSet(range(10))) == list(range(10)))
     self.assertTrue(list(IntSet(tuple(range(10)))) == list(range(10)))
     self.assertTrue(list(IntSet({1: 1})) == [1])
     self.assertRaises(TypeError, IntSet, 1)
     self.assertRaises(TypeError, IntSet, object())
     self.assertRaises(TypeError, IntSet, ["1"])
예제 #10
0
    def test_cmp(self):
        l1 = random.sample(range(10000), 20)
        s1 = IntSet(l1)
        s2 = IntSet(l1)

        self.assertEqual(s1, s2)
        self.assertTrue(s1 >= s2)
        self.assertTrue(s1 <= s2)

        s2.add(10001)

        self.assertNotEqual(s1, s2)
        self.assertTrue(s2 > s1)
        self.assertTrue(s1 < s2)
        self.assertTrue(s2 >= s1)
        self.assertTrue(s1 <= s2)

        self.assertRaises(TypeError, lambda: s1 <= "1")
예제 #11
0
    def test_remove(self):
        l1 = random.sample(range(10000), 2000)
        l2 = random.sample(l1, 300)
        s1 = IntSet(l1)
        s2 = set(l1)

        for x in l2:
            s1.remove(x)
            s2.remove(x)
        self.assertTrue(list(s1), sorted(s2))
        self.assertRaises(KeyError, s1.remove, 10001)
        self.assertRaises(TypeError, s1.remove, "1")
예제 #12
0
    def test_update(self):
        l1 = random.sample(range(10000), 2000)
        l2 = random.sample(range(10000), 2000)

        s2 = set(l1)
        s2.update(l2)

        s1 = IntSet(l1)
        s1.update(l2)
        self.assertTrue(list(s1) == sorted(list(s2)))

        s1 = IntSet(l1)
        s1.update(set(l2))
        self.assertTrue(list(s1) == sorted(list(s2)))

        s1 = IntSet(l1)
        s1.update(IntSet(l2))
        self.assertTrue(list(s1) == sorted(list(s2)))
        self.assertRaises(TypeError, s1.update, 1)
        self.assertRaises(TypeError, s1.update, ["1"])

        s1 = IntSet([1 << 1000])
        s1.update(range(255, 257))
        self.assertEqual(s1.max(), 1 << 1000)

        s1 = IntSet(range(10))
        s1.update(range(1 << 100, (1 << 100) + 5))
        self.assertEqual(s1.max(), (1 << 100) + 4)
예제 #13
0
    def test_discard(self):
        l1 = random.sample(range(10000), 2000)
        l2 = random.sample(l1, 300)
        s1 = IntSet(l1)
        s2 = set(l1)

        for x in l2:
            s1.discard(x)
            s2.discard(x)

        self.assertTrue(list(s1), sorted(s2))
        s1.discard(10001)
        self.assertRaises(TypeError, s1.discard, "1")
예제 #14
0
 def test_get_slice(self):
     l1 = sorted(random.sample(range(10000), 2000))
     s = IntSet(l1)
     self.assertEqual(s[10:100], IntSet(l1[10:100]))
     self.assertEqual(s[10:300], IntSet(l1[10:300]))
     self.assertEqual(s[10:1000], IntSet(l1[10:1000]))
     self.assertEqual(s[10:-10], IntSet(l1[10:-10]))
     self.assertEqual(s[10:9], IntSet(l1[10:9]))
예제 #15
0
 def test_max(self):
     l1 = random.sample(range(10000), 2000)
     s = IntSet(l1)
     self.assertEqual(s.max(), max(l1))
     self.assertRaises(ValueError, lambda: IntSet().max())
예제 #16
0
 def test_len(self):
     s = IntSet(random.sample(range(10000), 2000))
     self.assertEqual(len(s), 2000)
예제 #17
0
 def test_clear(self):
     s = IntSet(random.sample(range(10000), 2000))
     s.clear()
     self.assertTrue(list(s) == [])
예제 #18
0
 def test_get_item(self):
     l1 = sorted(random.sample(range(10000), 2000))
     s = IntSet(l1)
     self.assertEqual(s[1000], l1[1000])
     self.assertEqual(s[-500], l1[-500])
     self.assertRaises(KeyError, lambda: s[3000])
예제 #19
0
    assert not (l & r)
    assert l.isdisjoint(r)


@given(IntSets, IntSets)
def test_removing_each_from_the_other_is_disjoint(x, y):
    assume(x.intersects(y))
    u = x - y
    v = y - x
    assert not (u & v)
    assert u.isdisjoint(v)


@example(IntSet.empty())
@example(IntSet.single(1))
@example(IntSet([1, 2, 3, 6]))
@given(IntSets)
def test_pickling_works_correctly(x):
    assert pickle.loads(pickle.dumps(x)) == x


@example(IntSet.interval(0, 10))
@example(IntSet([(0, 10), (15, 20)]))
@given(IntSets)
def test_copies_as_self(x):
    assert copy(x) is x
    assert deepcopy(x) is x


@given(st.lists(integers_in_range))
def test_iterable_equivalent_to_intervals_of_length_one(xs):
예제 #20
0
def test_extra_args_is_a_type_error():
    with pytest.raises(TypeError):
        IntSet(1, 2)
예제 #21
0
short_intervals = st.builds(
    lambda start, length: assume(
        start + length <= 2 ** 64) and (start, start + length),
    integers_in_range, st.integers(0, SMALL))

interval_list = st.lists(intervals, average_size=10)

IntSets = st.builds(
    IntSet.from_intervals, interval_list) | integers_in_range.map(
        IntSet.single) | intervals.map(lambda x: IntSet.interval(*x))


@example(IntSet.empty())
@example(IntSet.single(1))
@example(IntSet([1, 2, 3, 6]))
@given(IntSets)
def test_pickling_works_correctly(x):
    assert pickle.loads(pickle.dumps(x)) == x


@example(IntSet.interval(0, 10))
@example(IntSet([(0, 10), (15, 20)]))
@given(IntSets)
def test_copies_as_self(x):
    assert copy(x) is x
    assert deepcopy(x) is x


def test_deepcopy_collapses_reference_equality():
    x = IntSet.from_iterable([1, 2, 3])
예제 #22
0
    c val or clear val : valの集合を空集合化
    inc val1 val2 : val1の集合の各要素にval2を加算
    l val or len val : valの集合の要素数を表示
    h or help : ヘルプを表示
    q or quit : 終了
    '''

    print(help_str)


def value_check(length):
    print(len(token))
    return len(token) >= length


ss1 = IntSet()
ss2 = IntSet()

cmd = ""

while True:
    cmd = input(">> ")
    token = cmd.split()  # 空白やタブでコマンドを区切る
    f = token[0]

    if f == 'i' or f == 'insert':
        if len(token) >= 3:
            if token[1] == '1':
                ss1.insert_list(token[2:])
            elif token[1] == '2':
                ss2.insert_list(token[2:])
예제 #23
0
 def test_negative_num(self):
     data = random.sample(range(-10000, 0), 2000)
     self.assertTrue(list(IntSet(data)) == sorted(data))
예제 #24
0
 def test_iter(self):
     data = random.sample(range(10000), 2000)
     s = IntSet(data)
     self.assertTrue(list(s) == sorted(data))
예제 #25
0
from intset import IntSet

s1 = IntSet()
s2 = IntSet()


def display():
    print('s1:', s1, '  s2:', s2)


def reset():
    s1.clear()
    s2.clear()
    s1.insert(2)
    s1.insert(3)
    s2.insert(3)
    s2.insert(2)
    s2.insert(5)


reset()
print("default value")
display()

s1.clear()
print("\ns1.clear()")
display()
reset()

lst = [6, 8, 9]
s1.insert_list(lst)
예제 #26
0
 def test_copy(self):
     l1 = random.sample(range(10000), 2000)
     s1 = IntSet(l1)
     s2 = s1.copy()
     self.assertEqual(s1, s2)
예제 #27
0
def test_default_intset_is_empty():
    assert IntSet() == IntSet.empty()
예제 #28
0
 def test_large_array(self):
     s1 = IntSet(range(1000000))
     self.assertEqual(len(s1), 1000000)
예제 #29
0
def test_comparision_with_other_type_is_error():
    with pytest.raises(TypeError):
        IntSet([1, 2, 3]) <= [1, 2, 3]
 def setUp(self):
     random.seed(28)
     self.set0 = IntSet(0)  # empty
     self.set5 = IntSet(5)
     self.set4 = IntSet(4)