def test_traverse_only_file_node(self): node1 = DirectoryNode("", None) node2 = node1.get_or_insert_node("part1/part2/part3") node3 = node1.get_or_insert_node("part1/part2/part4") node4 = node1.get_or_insert_node("part1/part2/part5") node5 = node1.get_or_insert_node("part1/part6/part7") node6 = node1.get_or_insert_node("part8/part9") node7 = node1.get_or_insert_node("part10") node_list = list(node1.traverse_only_file_node()) assert len(node_list) == 6 for node in (node2, node3, node4, node5, node6, node7): assert node in node_list
def test_traverse_only_directory_node(self): node1 = DirectoryNode("", None) node2 = node1.get_or_insert_node("part1/part2/part3") node5 = node1.get_or_insert_node("part1/part6/part7") node6 = node1.get_or_insert_node("part8/part9") node_list = list(node1.traverse_only_directory_node()) assert len(node_list) == 5 assert node1 in node_list assert node2.parent in node_list assert node2.parent.parent in node_list assert node5.parent in node_list assert node6.parent in node_list
def test_traverse_only_dir_tree(self): node1 = DirectoryNode("", None) node2 = node1.get_or_insert_node("part1/part2/part3") node5 = node1.get_or_insert_node("part1/part6/part7") node6 = node1.get_or_insert_node("part8/part9") node8 = node1.get_or_insert_node("part11", only_directory=True) def collect(node): return isinstance(node, DirectoryNode) node_list = list(node1.traverse(collect=collect)) assert len(node_list) == 6 assert node1 in node_list assert node2.parent in node_list assert node2.parent.parent in node_list assert node5.parent in node_list assert node6.parent in node_list assert node8 in node_list
def test_getinsert_last_two_part_not_exist_no_create(self): node1 = DirectoryNode("", None) node2 = DirectoryNode("part1", node1) node1.children["part1"] = node2 sub_node = node1.get_or_insert_node( "part1/part2/part3/", create=False) assert sub_node is None assert len(node2.children) == 0
def test_getinsert_long_path_and_exist(self): node1 = DirectoryNode("", None) node2 = DirectoryNode("part1", node1) node1.children["part1"] = node2 node3 = DirectoryNode("part2", node2) node2.children["part2"] = node3 node4 = DirectoryNode("part3", node3) node3.children["part3"] = node4 sub_node = node1.get_or_insert_node("part1/part2/part3/") assert sub_node is node4
def test_traverse_various_node_tree(self): node1 = DirectoryNode("", None) node2 = node1.get_or_insert_node("part1/part2/part3") node3 = node1.get_or_insert_node("part1/part2/part4") node4 = node1.get_or_insert_node("part1/part2/part5") node5 = node1.get_or_insert_node("part1/part6/part7") node6 = node1.get_or_insert_node("part8/part9") node7 = node1.get_or_insert_node("part10") def collect(node): return isinstance(node, FileNode) node_list = list(node1.traverse(collect=collect)) assert len(node_list) == 6 assert node2 in node_list assert node3 in node_list assert node4 in node_list assert node5 in node_list assert node6 in node_list assert node7 in node_list
def test_getinsert_long_path_and_last_leaf_not_exist_and_no_create(self): node1 = DirectoryNode("", None) node2 = DirectoryNode("part1", node1) node1.children["part1"] = node2 node3 = DirectoryNode("part2", node2) node2.children["part2"] = node3 sub_node = node1.get_or_insert_node( "part1/part2/part3/", create=False) assert sub_node is None assert "part3" not in node3.children
def test_getinsert_last_two_part_do_not_exist(self): node1 = DirectoryNode("", None) node2 = DirectoryNode("part1", node1) node1.children["part1"] = node2 sub_node = node1.get_or_insert_node("part1/part2/part3/") assert sub_node is not None assert isinstance(sub_node, FileNode) sub_node_parent = sub_node.parent assert sub_node_parent is not None assert sub_node_parent.parent is node2 assert "part2" in node2.children assert node2.children["part2"] is sub_node_parent
def test_getinsert_long_path_and_last_leaf_not_exist(self): node1 = DirectoryNode("", None) node2 = DirectoryNode("part1", node1) node1.children["part1"] = node2 node3 = DirectoryNode("part2", node2) node2.children["part2"] = node3 sub_node = node1.get_or_insert_node("part1/part2/part3/") assert sub_node is not None assert isinstance(sub_node, FileNode) assert sub_node.parent is node3 assert "part3" in node3.children assert node3.children["part3"] is sub_node
def test_getinsert_single_path_and_not_exist_and_only_directory(self): node = DirectoryNode("", None) sub_node = node.get_or_insert_node("single", only_directory=True) assert sub_node is not node assert "single" in node.children assert isinstance(node.children["single"], DirectoryNode)
def test_getinsert_single_path_and_exist(self): node = DirectoryNode("single", None) sub_node = node.get_or_insert_node("single") assert sub_node is not node assert "single" in node.children assert isinstance(node.children["single"], FileNode)
def test_getinsert_empty_path_and_exist(self): node = DirectoryNode("", None) assert node.get_or_insert_node("") is node