def test_genes(FakeITree, gene_intervals): tree = itree.ITree(nodes=gene_intervals) mock_tree = FakeITree(nodes=gene_intervals) for search in gene_intervals: if len(mock_tree.search(search)) != len(tree.search(search)): tree.search(search) assert len(mock_tree.search(search)) == len(tree.search(search))
def test_ptree(self): intervals = [ (8, 11), (10, 12), (9, 13) ] mytree = itree.ITree() mytree.construct(intervals) mytree.dump()
def test_small(self): intervals = [ (0, 8), (1, 3), (5, 7), ] mytree = itree.ITree() mytree.construct(intervals) mytree.dump()
def test_search(FakeITree, itree_random_intervals, itree_random_queries, seed): random.seed(random.randint(0, sys.maxsize)) tree = itree.ITree(nodes=itree_random_intervals) mock_tree = FakeITree(nodes=itree_random_intervals) for search in itree_random_queries: if len(mock_tree.search(search)) != len(tree.search(search)): tree.search(search) print(f"seed == {seed}") assert len(mock_tree.search(search)) == len(tree.search(search))
def test_random_remove(itree_random_intervals): t = itree.ITree() for node in itree_random_intervals: t.insert(node) for node in itree_random_intervals[::5]: old_size = len(t) t.remove(node) new_size = len(t) assert new_size == old_size-1
def test_node_really_removed(itree_complex_sample): t = itree.ITree() nodes = list(sorted(list(set(itree_complex_sample)))) for node in nodes: t.insert(node) for node in nodes[::5]: t.remove(node) for r in t.search(node): assert f"({r.start},{r.end})" != f"({node.start},{node.end})"
def test_remove_nothing(FakeITree, FakeNode, itree_simple_sample): tree = itree.ITree(nodes=itree_simple_sample) nonpresent_node = FakeNode(100000,200000) assert nonpresent_node not in itree_simple_sample, \ f"{nonpresent_node} is in the sample; revise the test" expected = FakeITree(itree_simple_sample) tree.remove(nonpresent_node) test_node = itree_simple_sample[0] assert len(tree) == len(expected) assert tree.search(test_node) == expected.search(test_node)
def test_remove_all_nodes(itree_random_intervals): t = itree.ITree() nodes = list(sorted(list(set(itree_random_intervals)))) for node in nodes: t.insert(node) for node in nodes: old_size = len(t) t.remove(node) new_size = len(t) assert new_size == old_size-1 assert len(t) == 0
def test_big(self): intervals = [ (1, 4), (6, 8), (15, 19), (2, 6), (10, 12), (17, 22), (5, 6), (8, 11), (14, 18), (22, 25), (1, 3), (9, 13), (17, 20), (21, 24), (1, 12) ] mytree = itree.ITree() mytree.construct(intervals) mytree.dump() icontrol = {(15, 19), (14, 18)} itest = {x for x in mytree.find_intervals_for_point(16)} self.assertEqual(icontrol, itest) icontrol = { (9, 13), (8, 11), (6, 8), (1, 12), (10, 12), } itest = set([x for x in mytree.find_intervals_for_interval((7, 11))]) self.assertEqual(icontrol, itest) icontrol = { (9, 13), (8, 11), (1, 12), (10, 12), } itest = set([x for x in mytree.find_intervals_for_interval((8, 11))]) self.assertEqual(icontrol, itest)
def constructor(self, intervals) -> Callable[[], itree.ITree]: self._object = itree.ITree(intervals) return lambda: itree.ITree(intervals)
def test_insert(itree_simple_sample): t = itree.ITree() for node in itree_simple_sample: t.insert(node)
def test_random_insert(FakeNode, itree_random_intervals): t = itree.ITree() for node in itree_random_intervals: t.insert(node)
def test_complex_insert(itree_complex_sample): t = itree.ITree() for node in itree_complex_sample: t.insert(node)
def test_search_empty_tree(FakeITree, FakeNode): tree = itree.ITree() test_node = FakeNode(3,15) assert tree.search(test_node) == []
def test_node_str(itree_simple_sample): tree = itree.ITree(nodes=itree_simple_sample) expected = f"ITree(root=({tree.root.start},{tree.root.end}))" assert str(tree) == expected
def test_tree_pstring(itree_simple_sample): tree = itree.ITree(nodes=itree_simple_sample) assert tree.pstring() == simple_tree_pstring