コード例 #1
0
    def test(self, n_elems, quadtree_bounds, max_depth, change_bounds):
        rects = [random_rectangle(quadtree_bounds) for _ in range(n_elems)]
        params = quadtree_bounds + (max_depth, )
        qt = Node(*params)
        [qt.insert(r) for r in rects]
        key = lambda r: r.bounds
        assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)
        assert len(qt.get_children()) == n_elems

        shuffle(rects)

        for r in rects:
            if change_bounds:
                new_bounds = random_rectangle(quadtree_bounds).bounds
                r.bounds = new_bounds
            qt.reinsert(r)
            assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)
コード例 #2
0
ファイル: test_basic.py プロジェクト: h4ck3rm1k3/quadpy
 def test_clear(self):
     qt = Node(0, 0, 1000, 1000)
     [qt.insert(random_rectangle(qt.bounds)) for _ in range(300)]
     assert len(qt.get_children()) == 300
     assert qt._get_depth() in [3, 4]  # can't know for sure
     qt.clear()
     assert qt.get_children() == []
     assert qt.direct_children == []
コード例 #3
0
ファイル: test_stress.py プロジェクト: bgr/quadpy
    def test(self, n_elems, quadtree_bounds, max_depth, change_bounds):
        rects = [random_rectangle(quadtree_bounds) for _ in range(n_elems)]
        params = quadtree_bounds + (max_depth,)
        qt = Node(*params)
        [qt.insert(r) for r in rects]
        key = lambda r: r.bounds
        assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)
        assert len(qt.get_children()) == n_elems

        shuffle(rects)

        for r in rects:
            if change_bounds:
                new_bounds = random_rectangle(quadtree_bounds).bounds
                r.bounds = new_bounds
            qt.reinsert(r)
            assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)
コード例 #4
0
 def test_clear(self):
     qt = Node(0, 0, 1000, 1000)
     [qt.insert(random_rectangle(qt.bounds)) for _ in range(300)]
     assert len(qt.get_children()) == 300
     assert qt._get_depth() in [3, 4]  # can't know for sure
     qt.clear()
     assert qt.get_children() == []
     assert qt.direct_children == []
コード例 #5
0
 def test_insert_and_reinsert(self, quadtree_bounds, max_depth):
     params = quadtree_bounds + (max_depth, )
     qt = Node(*params)
     rect = random_rectangle(quadtree_bounds)
     print 'Testing with {0}, {1}'.format(qt, rect)  # shown if test fails
     assert qt.direct_children == []
     assert qt.get_children() == []
     qt.insert(rect)
     assert qt.get_children() == [rect]
     qt.reinsert(rect)
     assert qt.get_children() == [rect]
コード例 #6
0
ファイル: test_stress.py プロジェクト: bgr/quadpy
 def test_insert_and_reinsert(self, quadtree_bounds, max_depth):
     params = quadtree_bounds + (max_depth,)
     qt = Node(*params)
     rect = random_rectangle(quadtree_bounds)
     print 'Testing with {0}, {1}'.format(qt, rect)  # shown if test fails
     assert qt.direct_children == []
     assert qt.get_children() == []
     qt.insert(rect)
     assert qt.get_children() == [rect]
     qt.reinsert(rect)
     assert qt.get_children() == [rect]
コード例 #7
0
ファイル: test_stress.py プロジェクト: bgr/quadpy
    def test(self, n_elems, quadtree_bounds, max_depth, removal_order):
        rects = [random_rectangle(quadtree_bounds) for _ in range(n_elems)]
        params = quadtree_bounds + (max_depth,)
        qt = Node(*params)
        [qt.insert(r) for r in rects]
        key = lambda r: r.bounds
        assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)
        assert len(qt.get_children()) == n_elems

        pop_element = [
            lambda: rects.pop(0),
            lambda: rects.pop(),
            lambda: rects.pop(randint(0, len(rects) - 1)),
        ][removal_order]

        while rects:
            rect = pop_element()
            qt.remove(rect)
            assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)

        assert qt.get_children() == []
コード例 #8
0
    def test(self, n_elems, quadtree_bounds, max_depth, removal_order):
        rects = [random_rectangle(quadtree_bounds) for _ in range(n_elems)]
        params = quadtree_bounds + (max_depth, )
        qt = Node(*params)
        [qt.insert(r) for r in rects]
        key = lambda r: r.bounds
        assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)
        assert len(qt.get_children()) == n_elems

        pop_element = [
            lambda: rects.pop(0),
            lambda: rects.pop(),
            lambda: rects.pop(randint(0,
                                      len(rects) - 1)),
        ][removal_order]

        while rects:
            rect = pop_element()
            qt.remove(rect)
            assert sorted(qt.get_children(), key=key) == sorted(rects, key=key)

        assert qt.get_children() == []