def test_two_leaf_left(self): leaf = TMTree("leaf", [], 10) leaf2 = TMTree("leaf2", [], 50) root = TMTree("root", [leaf, leaf2], 0) root.update_rectangles((0, 0, 20, 10)) set_expanded(root) act = root.get_tree_at_position((3, 10)) self.assertEqual( act, leaf, "The leaf is the only qualified leaf in the DISPLAYED Tree" + " YOUR RESULT IS " + act._name)
def test_folder(self): leaf = TMTree("leaf", [], 40) folderA = TMTree("folderA", [leaf], 0) leaf2 = TMTree("leaf2", [], 40) folderB = TMTree("folderB", [leaf2], 0) root = TMTree("root", [folderA, folderB], 0) root.update_rectangles((0,0,100,100)) set_expanded(root) root.collapse() self.assertEqual(root._expanded, False, "You should set _expanded of every thing under root to False") rec = [rect[0] for rect in root.get_rectangles()] self.assertCountEqual(rec, [(0,0,100,100)])
def test_four_square_intersection(self): leaf = TMTree("leaf", [], 50) leaf2 = TMTree("leaf2", [], 50) leaf3 = TMTree("leaf3", [], 50) leaf4 = TMTree("leaf4", [], 50) internal1 = TMTree("internal1", [leaf, leaf2], 0) internal2 = TMTree("internal2", [leaf3, leaf4], 0) root = TMTree("root", [internal1, internal2], 0) rect = (0, 0, 100, 100) set_expanded(root) root.update_rectangles(rect) exp = leaf act = root.get_tree_at_position((10, 2)) self.assertEqual( act, exp, "The leaf is the only qualified leaf in the DISPLAYED Tree YOUR RESULT IS " + act._name)
def test_multiple_folder(self): leaf = TMTree("leaf", [], 40) leaf2 = TMTree("leaf2", [], 40) folderA = TMTree("folderA", [leaf, leaf2], 0) leaf3 = TMTree("leaf3", [], 40) leaf4 = TMTree("leaf4", [], 40) folderB = TMTree("folderB", [leaf3, leaf4], 0) root = TMTree("root", [folderA, folderB], 0) root.update_rectangles((0, 0, 100, 100)) set_expanded(root) folderA.collapse() rec = [rect[0] for rect in root.get_rectangles()] act = all(test_collapse(folderA)) # self.assertCountEqual(rec, [(0,0,100,50), (0,50,50,50), (50,50,50,50)]) self.assertEqual(rec, [(0,0,100,100)]) self.assertEqual(root._expanded, False, "You should not modified root") self.assertEqual(act, True, "You should set expanded of every thing under folderA be False")
def set_expanded(tree): if is_leaf(tree): return [tree._expanded == False] else: temp = [] temp.append(tree._expanded) for sub in tree._subtrees: temp.extend(set_expanded(sub)) return temp
def test_single_folder(self): leaf = TMTree("leaf", [], 50) folder = TMTree("folder", [leaf], 50) folder.expand_all() act = all(set_expanded(folder)) folder.update_rectangles((0, 0, 100, 100)) rec = [rect[0] for rect in folder.get_rectangles()] self.assertCountEqual(rec, [(0, 0, 100, 100)]) self.assertEqual(act, True, "You should change every internal node under folder")
def test_internal_node2(self): leaf = TMTree("leaf", [], 40) folderA = TMTree("folderA", [leaf], 0) leaf2 = TMTree("leaf2", [], 40) folderB = TMTree("folderB", [leaf2], 0) root = TMTree("root", [folderA, folderB], 0) root._expanded = True root.update_rectangles((0, 0, 100, 100)) root.expand() folderB.expand_all() act = all(set_expanded(folderB)) self.assertEqual(act, True, "You should change the expanded of folderB") self.assertEqual(folderA._expanded, False, "You should not modified folderA") self.assertCountEqual([rect[0] for rect in folderB.get_rectangles()], [(0, 50, 100, 50)]) self.assertCountEqual([rect[0] for rect in root.get_rectangles()], [(0, 0, 100, 50), (0, 50, 100, 50)])
def test_root(self): leaf = TMTree("leaf", [], 40) leaf2 = TMTree("leaf2", [], 40) folderA = TMTree("folderA", [leaf, leaf2], 0) leaf3 = TMTree("leaf3", [], 40) leaf4 = TMTree("leaf4", [], 40) folderB = TMTree("folderB", [leaf3, leaf4], 0) root = TMTree("root", [folderA, folderB], 0) root.update_rectangles((0, 0, 100, 100)) root.expand_all() act = all(set_expanded(root)) rec = [rect[0] for rect in root.get_rectangles()] self.assertEqual( act, True, "You should change every internal node under root to be True") self.assertCountEqual(rec, [(0, 0, 50, 50), (50, 0, 50, 50), (0, 50, 50, 50), (50, 50, 50, 50)]) self.assertCountEqual([rect[0] for rect in folderA.get_rectangles()], [(0, 0, 50, 50), (50, 0, 50, 50)]) self.assertCountEqual([rect[0] for rect in folderB.get_rectangles()], [(0, 50, 50, 50), (50, 50, 50, 50)])
def test_internal_node(self): leaf = TMTree("leaf", [], 40) folderA = TMTree("folderA", [leaf], 0) leaf2 = TMTree("leaf2", [], 40) folderB = TMTree("folderB", [leaf2], 0) root = TMTree("root", [folderA, folderB], 0) root.update_rectangles((0, 0, 100, 100)) root._expanded = True root.expand() folderA.expand_all() temp = set_expanded(folderA) temp.pop(0) act = all(temp) rec = [rect[0] for rect in root.get_rectangles()] self.assertCountEqual([rect[0] for rect in folderA.get_rectangles()], [(0, 0, 100, 50)]) self.assertCountEqual(rec, [(0, 0, 100, 50), (0, 50, 100, 50)]) self.assertEqual(act, True, "You should change every internal under folderA") self.assertEqual(root._expanded, True, "You should change root's expaned to be True") self.assertEqual(folderB._expanded, False, "You should not modified folderB's expanded")