def testdup_compare(self):
     for i in range(5):
         t = random_pair_tree(0, self.n, size=self.n, compare=pair_compare)
         u = avl.new(t)
         v = t[:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u, pair_compare))
         self.assertTrue(v.verify() == 1)
         self.assertTrue(equal_tree(t, v, pair_compare))
     t = avl.new(compare=pair_compare)
     u = avl.new(t)
     self.assertTrue(verify_empty(u))
Beispiel #2
0
 def testdup_basic(self):
     for i in range(10):
         t = random_int_tree(0, self.n, size=self.n)
         u = avl.new(t)
         v = t[:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         self.assertTrue(v.verify() == 1)
         self.assertTrue(equal_tree(t, v))
     t = avl.new()
     u = avl.new(t)
     self.assertTrue(verify_empty(u))
Beispiel #3
0
 def testdup_compare(self):
     for i in range(5):
         t = random_pair_tree(0, self.n, size=self.n, compare=pair_compare)
         u = avl.new(t)
         v = t[:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u, pair_compare))
         self.assertTrue(v.verify() == 1)
         self.assertTrue(equal_tree(t, v, pair_compare))
     t = avl.new(compare=pair_compare)
     u = avl.new(t)
     self.assertTrue(verify_empty(u))
 def testdup_basic(self):
     for i in range(10):
         t = random_int_tree(0, self.n, size=self.n)
         u = avl.new(t)
         v = t[:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         self.assertTrue(v.verify() == 1)
         self.assertTrue(equal_tree(t, v))
     t = avl.new()
     u = avl.new(t)
     self.assertTrue(verify_empty(u))
 def testnew_compare_basic(self):
     random.shuffle(self.list)
     pairs = [(i, 0) for i in self.list]
     for i in range(self._times):
         t = avl.new(pairs, compare=pair_compare)
         self.assertTrue(verify_len(t, self.size))
         for p in pairs:
             self.assertTrue(p in t)
Beispiel #6
0
 def testnew_basic(self):
     for i in range(self._times):
         random.shuffle(self.list)
         t = avl.new(self.list, unique=0)
         self.assertTrue(t.verify() == 1 and len(t) == self.size)
         for n in self.list:
             self.assertTrue(n in t)
     t = None
 def testnew_basic(self):
     for i in range(self._times):
         random.shuffle(self.list)
         t = avl.new(self.list, unique=0)
         self.assertTrue(t.verify() == 1 and len(t) == self.size)
         for n in self.list:
             self.assertTrue(n in t)
     t = None
Beispiel #8
0
 def testnew_compare_basic(self):
     random.shuffle(self.list)
     pairs = [(i, 0) for i in self.list]
     for i in range(self._times):
         t = avl.new(pairs, compare=pair_compare)
         self.assertTrue(verify_len(t, self.size))
         for p in pairs:
             self.assertTrue(p in t)
Beispiel #9
0
 def testnew_basic_unique(self):
     for i in range(self._times):
         random.shuffle(self.list)
         list3 = self.list * 3
         t = avl.new(list3, unique=1)
         self.assertTrue(verify_len(t, self.size))
         for n in self.list:
             self.assertTrue(n in t)
     t = None
Beispiel #10
0
 def testnew_compare_unique(self):
     random.shuffle(self.list)
     tuples = [(i, 0) for i in self.list]
     tuples3 = tuples * 3
     for i in range(self._times):
         t = avl.new(tuples3, compare=pair_compare, unique=1)
         self.assertTrue(verify_len(t, self.size))
         for u in tuples:
             self.assertTrue(u in t)
 def testnew_compare_unique(self):
     random.shuffle(self.list)
     tuples = [(i, 0) for i in self.list]
     tuples3 = tuples * 3
     for i in range(self._times):
         t = avl.new(tuples3, compare=pair_compare, unique=1)
         self.assertTrue(verify_len(t, self.size))
         for u in tuples:
             self.assertTrue(u in t)
Beispiel #12
0
 def testins_bad(self):
     t = avl.new([(5, 6), (2, 8), (7, -1), (-1, 1), (2, -3)],
                 compare=pair_compare)
     for i in range(5):
         self.assertRaises(TypeError, t.insert, 66)
         self.assertRaises(TypeError, t.has_key, 66)
         self.assertFalse(66 in t)
         t.insert((3, 3))
         self.assertTrue(t.verify() == 1)
 def testdel_lessbasic(self):
     n = 1000
     t = avl.new()
     for i in range(3):
         for k in gen_ints(0, n):
             t.insert(k)
     self.assertTrue(t.verify() == 1)
     # params for sequence
     modulo = n
     step = 37
     for i in range(10):
         u = avl.new(t)
         for k in gen_ints_perm(step, modulo):
             while k in u:
                 u.remove(k)
             self.assertFalse(k in u)
         self.assertTrue(u.verify() == 1)
         self.assertTrue(len(u) == 0, 'len='+str(len(u))+' '+str(u))
Beispiel #14
0
 def testdel_lessbasic(self):
     n = 1000
     t = avl.new()
     for i in range(3):
         for k in gen_ints(0, n):
             t.insert(k)
     self.assertTrue(t.verify() == 1)
     # params for sequence
     modulo = n
     step = 37
     for i in range(10):
         u = avl.new(t)
         for k in gen_ints_perm(step, modulo):
             while k in u:
                 u.remove(k)
             self.assertFalse(k in u)
         self.assertTrue(u.verify() == 1)
         self.assertTrue(len(u) == 0, 'len=' + str(len(u)) + ' ' + str(u))
 def testins_bad(self):
     t = avl.new([(5, 6), (2, 8), (7, -1), (-1, 1), (2, -3)],
                 compare=pair_compare)
     for i in range(5):
         self.assertRaises(TypeError, t.insert, 66)
         self.assertRaises(TypeError, t.has_key, 66)
         self.assertFalse(66 in t)
         t.insert((3, 3))
         self.assertTrue(t.verify() == 1)
 def testnew_basic_unique(self):
     for i in range(self._times):
         random.shuffle(self.list)
         list3 = self.list * 3
         t = avl.new(list3, unique=1)
         self.assertTrue(verify_len(t, self.size))
         for n in self.list:
             self.assertTrue(n in t)
     t = None
 def testnew_compare_dupes(self):
     random.shuffle(self.list)
     pairs = [(i, 0) for i in self.list]
     pairs3 = pairs * 3
     size3 = self.size * 3
     for i in range(self._times):
         t = avl.new(pairs3, compare=pair_compare, unique=0)
         self.assertTrue(verify_len(t, size3))
         for p in pairs:
             self.assertTrue(p in t)
Beispiel #18
0
 def testnew_compare_dupes(self):
     random.shuffle(self.list)
     pairs = [(i, 0) for i in self.list]
     pairs3 = pairs * 3
     size3 = self.size * 3
     for i in range(self._times):
         t = avl.new(pairs3, compare=pair_compare, unique=0)
         self.assertTrue(verify_len(t, size3))
         for p in pairs:
             self.assertTrue(p in t)
 def testseq_spaninsert(self):
     n = 5000
     t = avl.new(compare=lambda x, y: cmp(y, x))
     for i in range(2):
         for i in gen_ints(0, 3*n):
             e = random.randint(-n, n)
             a1, a2 = t.span(e)
             t.insert(e, a2)
             self.assertTrue(t.span(e) == (a1, a2+1))
         self.assertTrue(verify_len(t, 3*n))
         t.clear()
Beispiel #20
0
 def testseq_spaninsert(self):
     n = 5000
     t = avl.new(compare=lambda x, y: cmp(y, x))
     for i in range(2):
         for i in gen_ints(0, 3 * n):
             e = random.randint(-n, n)
             a1, a2 = t.span(e)
             t.insert(e, a2)
             self.assertTrue(t.span(e) == (a1, a2 + 1))
         self.assertTrue(verify_len(t, 3 * n))
         t.clear()
 def testseq_sliceconcat(self):
     n = 2000
     e = avl.new()
     t = range_tree(0, n)
     self.assertTrue(verify_empty(e+e))
     self.assertTrue(equal_tree(t+e, t))
     self.assertTrue(equal_tree(e+t, t))
     for a in gen_ints_perm(50, n):
         u = t[:a] + t[a:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         u = None
Beispiel #22
0
 def testdump_compare(self):
     t = avl.new(self.list1, compare=revlowercmp)
     for proto in [0, 2]:
         f = BytesIO()
         p = pickle.Pickler(f, proto)
         t.dump(p)
         f.seek(0)
         p = pickle.Unpickler(f)
         u = avl.load(p)
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         f.close()
 def testdump_compare(self):
     t = avl.new(self.list1, compare=revlowercmp)
     for proto in [0, 2]:
         f = BytesIO()
         p = pickle.Pickler(f, proto)
         t.dump(p)
         f.seek(0)
         p = pickle.Unpickler(f)
         u = avl.load(p)
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         f.close()
Beispiel #24
0
 def testseq_sliceconcat(self):
     n = 2000
     e = avl.new()
     t = range_tree(0, n)
     self.assertTrue(verify_empty(e + e))
     self.assertTrue(equal_tree(t + e, t))
     self.assertTrue(equal_tree(e + t, t))
     for a in gen_ints_perm(50, n):
         u = t[:a] + t[a:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         u = None
 def testseq_index(self):
     t = avl.new()
     n = 5000
     for r in range(3):
         for i in range(3):
             for k in gen_ints_perm(11, n):
                 t.insert(k)
         self.assertTrue(verify_len(t, n*3))
         for i in gen_ints(0, n):
             self.assertTrue(t.index(i) == i*3)
             a, b = t.span(i)
             self.assertTrue((a == i*3) and (b-a == 3))
         t.clear()
Beispiel #26
0
 def testseq_insert(self):
     n = 5000
     t = avl.new()
     self.assertRaises(IndexError, t.insert, 'out', 1)
     self.assertRaises(IndexError, t.insert, 'out', -13)
     for i in gen_ints_perm(373, n):
         t.insert(2 * i)
     self.assertTrue(t.verify() == 1)
     for i in range(3):
         u = avl.new(t)
         for k in gen_ints(0, n):
             odd = 2 * k + 1
             u.insert(odd, odd)
             self.assertTrue(u[odd] == odd)
     self.assertTrue(u.verify() == 1)
     self.assertTrue(len(u) == 2 * n)
     for i in range(100):
         u.append(2 * n)
     for i in range(100):
         u.insert(0, 0)
     self.assertTrue(u.verify() == 1)
     list = None  # noqa
 def testseq_insert(self):
     n = 5000
     t = avl.new()
     self.assertRaises(IndexError, t.insert, 'out', 1)
     self.assertRaises(IndexError, t.insert, 'out', -13)
     for i in gen_ints_perm(373, n):
         t.insert(2*i)
     self.assertTrue(t.verify() == 1)
     for i in range(3):
         u = avl.new(t)
         for k in gen_ints(0, n):
             odd = 2*k+1
             u.insert(odd, odd)
             self.assertTrue(u[odd] == odd)
     self.assertTrue(u.verify() == 1)
     self.assertTrue(len(u) == 2*n)
     for i in range(100):
         u.append(2*n)
     for i in range(100):
         u.insert(0, 0)
     self.assertTrue(u.verify() == 1)
     list = None  # noqa
 def testseq_concatinplace(self):
     self.assertRaises(TypeError, avl.new().concat, [])
     n = 2000
     e = avl.new()
     t = range_tree(0, n)
     u = t[:]
     u.concat(e)
     self.assertTrue(equal_tree(t, u))
     e.concat(u)
     self.assertTrue(equal_tree(e, u))
     u += avl.new()
     self.assertTrue(equal_tree(t, u))
     e.clear()
     e += t
     self.assertTrue(equal_tree(e, t))
     e.clear()
     for a in gen_ints_perm(100, n):
         u = t[:a]
         u += t[a:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         u = None
Beispiel #29
0
 def testseq_concatinplace(self):
     self.assertRaises(TypeError, avl.new().concat, [])
     n = 2000
     e = avl.new()
     t = range_tree(0, n)
     u = t[:]
     u.concat(e)
     self.assertTrue(equal_tree(t, u))
     e.concat(u)
     self.assertTrue(equal_tree(e, u))
     u += avl.new()
     self.assertTrue(equal_tree(t, u))
     e.clear()
     e += t
     self.assertTrue(equal_tree(e, t))
     e.clear()
     for a in gen_ints_perm(100, n):
         u = t[:a]
         u += t[a:]
         self.assertTrue(u.verify() == 1)
         self.assertTrue(equal_tree(t, u))
         u = None
Beispiel #30
0
 def testseq_index(self):
     t = avl.new()
     n = 5000
     for r in range(3):
         for i in range(3):
             for k in gen_ints_perm(11, n):
                 t.insert(k)
         self.assertTrue(verify_len(t, n * 3))
         for i in gen_ints(0, n):
             self.assertTrue(t.index(i) == i * 3)
             a, b = t.span(i)
             self.assertTrue((a == i * 3) and (b - a == 3))
         t.clear()
 def testiter_remove(self):
     for start in range(1, self.n+1):
         u = avl.new(self.t)
         self.assertTrue(u.verify() == 1)
         j = iter(u)
         for i in range(start):
             next(j)
         index = j.index()
         self.assertTrue(index == start-1)
         while index < len(u):
             j.remove()
             # self.assertTrue(u.verify() == 1)
             self.assertTrue(j.index() == index)
         self.assertRaises(avl.Error, j.remove)
         self.assertTrue(u.verify() == 1)
Beispiel #32
0
 def testiter_remove(self):
     for start in range(1, self.n + 1):
         u = avl.new(self.t)
         self.assertTrue(u.verify() == 1)
         j = iter(u)
         for i in range(start):
             next(j)
         index = j.index()
         self.assertTrue(index == start - 1)
         while index < len(u):
             j.remove()
             # self.assertTrue(u.verify() == 1)
             self.assertTrue(j.index() == index)
         self.assertRaises(avl.Error, j.remove)
         self.assertTrue(u.verify() == 1)
Beispiel #33
0
 def testdel_basic(self):
     t = avl.new()
     t.remove(1)
     t.remove(-2)
     self.assertTrue(verify_empty(t))
     t = range_tree(-2000, +2000)
     self.assertTrue(t.verify() == 1)
     n = len(t)
     # no-op
     others = list(range(-2100, -2000)) + list(range(2000, 2100))
     random.shuffle(others)
     for i in others:
         t.remove(i)
     self.assertTrue(verify_len(t, n))
     others = None
     # empty trees
     lst = list(range(-2000, 2000))
     for i in range(10):
         random.shuffle(lst)
         u = avl.new(t)
         for k in lst:
             u.remove(k)
             self.assertFalse(k in u)
         self.assertTrue(verify_empty(u))
 def testdel_basic(self):
     t = avl.new()
     t.remove(1)
     t.remove(-2)
     self.assertTrue(verify_empty(t))
     t = range_tree(-2000, +2000)
     self.assertTrue(t.verify() == 1)
     n = len(t)
     # no-op
     others = list(range(-2100, -2000)) + list(range(2000, 2100))
     random.shuffle(others)
     for i in others:
         t.remove(i)
     self.assertTrue(verify_len(t, n))
     others = None
     # empty trees
     lst = list(range(-2000, 2000))
     for i in range(10):
         random.shuffle(lst)
         u = avl.new(t)
         for k in lst:
             u.remove(k)
             self.assertFalse(k in u)
         self.assertTrue(verify_empty(u))
Beispiel #35
0
 def testseq_removedupes(self):
     n = 2500
     steps = [501, 7, 1003, 1863]
     repeats = len(steps)
     t = avl.new()
     for step in steps:
         for k in gen_ints_perm(step, n):
             t.insert(k)
     for k in gen_ints_perm(1209, n):
         a, b = t.span(k)
         self.assertTrue(b - a == repeats)
         self.assertTrue(a == 0 or t[a - 1] < k)
         self.assertTrue(b == len(t) or t[b] > k)
         for i in range(repeats):
             t.remove_at(a)
         self.assertTrue(t.span(k) == (a, a))
     self.assertTrue(verify_empty(t))
 def testseq_removedupes(self):
     n = 2500
     steps = [501, 7, 1003, 1863]
     repeats = len(steps)
     t = avl.new()
     for step in steps:
         for k in gen_ints_perm(step, n):
             t.insert(k)
     for k in gen_ints_perm(1209, n):
         a, b = t.span(k)
         self.assertTrue(b-a == repeats)
         self.assertTrue(a == 0 or t[a-1] < k)
         self.assertTrue(b == len(t) or t[b] > k)
         for i in range(repeats):
             t.remove_at(a)
         self.assertTrue(t.span(k) == (a, a))
     self.assertTrue(verify_empty(t))
Beispiel #37
0
    def testseq_basic(self):
        t = avl.new()
        for step, modulo in [(491, 2000), (313, 10000)]:
            for i in gen_ints_perm(step, modulo):
                t.insert(i)

            for i in gen_ints(0, modulo):
                self.assertTrue(t.index(i) == i)
                self.assertTrue(t[i] == i)
                self.assertTrue(t[-i - 1] == t[modulo - i - 1])

            for i in gen_ints(-100, 0):
                self.assertTrue(t.index(i) == -1)
            for i in gen_ints(modulo, modulo + 100):
                self.assertTrue(t.index(i) == -1)
            t.clear()
        self.assertRaises(IndexError, self.geti, t, 11)
        self.assertRaises(IndexError, self.geti, t, -5)
    def testseq_basic(self):
        t = avl.new()
        for step, modulo in [(491, 2000), (313, 10000)]:
            for i in gen_ints_perm(step, modulo):
                t.insert(i)

            for i in gen_ints(0, modulo):
                self.assertTrue(t.index(i) == i)
                self.assertTrue(t[i] == i)
                self.assertTrue(t[-i-1] == t[modulo-i-1])

            for i in gen_ints(-100, 0):
                self.assertTrue(t.index(i) == -1)
            for i in gen_ints(modulo, modulo+100):
                self.assertTrue(t.index(i) == -1)
            t.clear()
        self.assertRaises(IndexError, self.geti, t, 11)
        self.assertRaises(IndexError, self.geti, t, -5)
Beispiel #39
0
 def testiter_basic(self):
     t = avl.new()
     j = iter(t)  # before first
     k = t.iter(1)  # after last
     self.assertRaises(StopIteration, j.__next__)
     self.assertRaises(StopIteration, j.prev)
     self.assertRaises(StopIteration, k.__next__)
     self.assertRaises(StopIteration, k.prev)
     t.insert('bb')
     self.assertRaises(StopIteration, j.prev)
     self.assertRaises(StopIteration, k.__next__)
     self.assertTrue(next(j) == 'bb')
     self.assertTrue(k.prev() == 'bb')
     self.assertRaises(StopIteration, j.__next__)
     self.assertRaises(StopIteration, k.prev)
     self.assertTrue(j.prev() == 'bb')
     self.assertTrue(next(k) == 'bb')
     self.assertTrue(j.cur() == 'bb' and k.cur() == 'bb')
     t.insert('aa')
     self.assertTrue(j.prev() == 'aa')
     t.insert('cc')
     self.assertTrue(next(k) == 'cc')
 def testiter_basic(self):
     t = avl.new()
     j = iter(t)     # before first
     k = t.iter(1)   # after last
     self.assertRaises(StopIteration, j.__next__)
     self.assertRaises(StopIteration, j.prev)
     self.assertRaises(StopIteration, k.__next__)
     self.assertRaises(StopIteration, k.prev)
     t.insert('bb')
     self.assertRaises(StopIteration, j.prev)
     self.assertRaises(StopIteration, k.__next__)
     self.assertTrue(next(j) == 'bb')
     self.assertTrue(k.prev() == 'bb')
     self.assertRaises(StopIteration, j.__next__)
     self.assertRaises(StopIteration, k.prev)
     self.assertTrue(j.prev() == 'bb')
     self.assertTrue(next(k) == 'bb')
     self.assertTrue(j.cur() == 'bb' and k.cur() == 'bb')
     t.insert('aa')
     self.assertTrue(j.prev() == 'aa')
     t.insert('cc')
     self.assertTrue(next(k) == 'cc')
def random_pair_tree(lo, hi, size=1000, compare=None):
    t = avl.new(compare=compare)
    for i in gen_ints(0, size):
        t.insert((random.randint(lo, hi-1), 0))
    return t
Beispiel #42
0
 def testfrom_iter_compare(self):
     a = self.list1 + [string.lower(s) for s in self.list1]
     t = avl.new(a, unique=0, compare=revlowercmp)
     u = avl.from_iter(iter(t), len(t), compare=revlowercmp)
     self.assertTrue(u.verify() == 1)
Beispiel #43
0
def random_pair_tree(lo, hi, size=1000, compare=None):
    t = avl.new(compare=compare)
    for i in gen_ints(0, size):
        t.insert((random.randint(lo, hi - 1), 0))
    return t
 def testfrom_iter_compare(self):
     a = self.list1 + [string.lower(s) for s in self.list1]
     t = avl.new(a, unique=0, compare=revlowercmp)
     u = avl.from_iter(iter(t), len(t), compare=revlowercmp)
     self.assertTrue(u.verify() == 1)
def range_tree(lo, hi, compare=None):
    t = avl.new(compare=compare)
    for i in gen_ints(lo, hi):
        t.insert(i)
    return t
Beispiel #46
0
 def testiter_forloop(self):
     list = self.orig[:]
     for i in range(5):
         random.shuffle(list)
         for k in avl.new(list):
             self.assertTrue(k == self.orig[k])
 def testiter_forloop(self):
     list = self.orig[:]
     for i in range(5):
         random.shuffle(list)
         for k in avl.new(list):
             self.assertTrue(k == self.orig[k])
Beispiel #48
0
def range_tree(lo, hi, compare=None):
    t = avl.new(compare=compare)
    for i in gen_ints(lo, hi):
        t.insert(i)
    return t