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)
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 == []
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)
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]
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]
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() == []
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() == []