def test_copy_10(self): r_src = RangeTree(min=0, max=10) for i in range(0, 10, 2): r_src.take(i) r_dst = r_src.copy() data = list(r_src.range_iter()) self.assertEqual(data, list(r_dst.range_iter())) r_dst.clear() self.assertEqual([], list(r_dst.range_iter()))
def test_complex(self): """ Test complex pairs """ r = RangeTree(min=-10, max=11) # 2 passes on the same data structure. for _ in range(2): self.assertEqual(r.is_empty(), True) for i in (-10, 10, 11): r.take(i) self.assertEqual(r.is_empty(), False) self.assertEqual(list(r.range_iter()), [(-10, -10), (10, 11)]) for i in (-8, -7, 8): r.take(i) self.assertEqual(list(r.range_iter()), [(-10, -10), (-8, -7), (8, 8), (10, 11)]) for i in (-9, 9): r.take(i) self.assertEqual(list(r.range_iter()), [(-10, -7), (8, 11)]) for i in (-9, 9): r.release(i) self.assertEqual(list(r.range_iter()), [(-10, -10), (-8, -7), (8, 8), (10, 11)]) for i in (8, 10, 11): r.release(i) self.assertEqual(list(r.range_iter()), [(-10, -10), (-8, -7)]) for i in (-10, -8, -7): r.release(i) # empty for next pass self.assertEqual(list(r.range_iter()), [])
def test_simple(self): r = RangeTree(min=0, max=9) ls = list(range(0, 10)) for i in ls: r.take(i) self.assertEqual(list(r.range_iter()), [(ls[0], ls[-1])]) self.assertEqual(r.has(ls[0] - 0), True) self.assertEqual(r.has(ls[0] - 1), False) self.assertEqual(r.has(ls[-1] + 0), True) self.assertEqual(r.has(ls[-1] + 1), False)
def test_many(self): r = RangeTree(min=0, max=9) # 2 passes to be sure for _ in range(2): self.assertEqual(r.is_empty(), True) ls = list(range(0, 10, 2)) for i in ls: r.take(i) self.assertEqual(r.is_empty(), False) self.assertEqual(r.has(ls[0] - 0), True) self.assertEqual(r.has(ls[0] - 1), False) self.assertEqual(r.has(ls[-1] + 0), True) self.assertEqual(r.has(ls[-1] + 1), False) self.assertEqual( list(r.range_iter()), [(0, 0), (2, 2), (4, 4), (6, 6), (8, 8)], ) r.release(ls.pop(0)) r.release(ls.pop(-1)) r.take(3) r.take(5) self.assertEqual(list(r.range_iter()), [(2, 6)]) r.release(2) r.release(6) self.assertEqual(list(r.range_iter()), [(3, 5)]) r.release(4) self.assertEqual(list(r.range_iter()), [(3, 3), (5, 5)]) for i in (3, 5): r.release(i) self.assertEqual(list(r.range_iter()), [])
def test_copy_empty(self): r_src = RangeTree(min=0, max=10) r_dst = r_src.copy() self.assertEqual(list(r_src.range_iter()), list(r_dst.range_iter()))