示例#1
0
文件: test_core.py 项目: Julian/veb
    def test_equal_if_same_contents(self):
        t = vEBTree.of_size(self.t.universe_size)
        self.assertEqual(t, self.t)

        self.t.add(2)
        self.assertNotEqual(t, self.t)

        t.add(2)
        self.assertEqual(t, self.t)

        t.update([3, 5, 7])
        self.assertNotEqual(t, self.t)

        self.t.update([3, 5, 7])
        self.assertEqual(t, self.t)
示例#2
0
文件: test_core.py 项目: Julian/veb
    def test_grow(self):
        t = vEBTree.of_size(2)
        self.assertEqual(t.universe_size, 2)

        t.add(2)
        self.assertEqual(t.universe_size, 4)
        self.assertIn(2, t)
        self.assertNotIn(3, t)

        t.add(7)
        self.assertEqual(t.universe_size, 8)
        self.assertIn(2, t)
        self.assertNotIn(3, t)
        self.assertIn(7, t)
        self.assertNotIn(6, t)

        t.add(195)
        self.assertEqual(t.universe_size, 256)
示例#3
0
文件: test_core.py 项目: Julian/veb
    def testRandom(self):
        n = 1 << 16
        totalOperations = 1 << 16
        operations = totalOperations

        q = vEBTree.of_size(n)
        lame = LameQueue()
        while operations > 0:
            # Do some searches
            numSearches = random.randint(0, 10)
            operations -= numSearches
            for i in range(numSearches):
                search = random.randint(0, n-1)
                r1 = search in lame
                r2 = search in q
                self.assertEqual(r1, r2)

                r1 = lame.predecessor(search)
                r2 = q.predecessor(search)
                self.assertEqual(r1, r2)

            # Change the queue state
            operations -= 1
            value = random.randint(0, n-1)
            stateChange = random.randint(0, 1)
            if stateChange == 0:
                q.add(value)
                lame.add(value)
                #  print "add", value
            else:
                q.discard(value)
                lame.discard(value)
                #  print "remove", value

            # Check the max/min variables
            assert lame.max() == q.max
            assert lame.min() == q.min
示例#4
0
文件: perftest.py 项目: Julian/veb
def random_tree(size):
    tree = vEBTree.of_size(size)
    for _ in range(randint(0, tree.universe_size - 1)):
        tree.add(randint(0, tree.universe_size - 1))
    return tree
示例#5
0
文件: test_core.py 项目: Julian/veb
 def setUp(self):
     self.t = vEBTree.of_size(4)
示例#6
0
文件: test_core.py 项目: Julian/veb
 def test_size_0_makes_empty_tree(self):
     t = vEBTree.of_size(0)
     self.assertEqual(t.universe_size, 0)
示例#7
0
文件: test_core.py 项目: Julian/veb
 def test_of_size(self):
     t = vEBTree.of_size(16)
     self.assertEqual(t.universe_size, 16)