def test_example_data(self): """UPDATED: the order of the subtrees now doesn't matter, as they will be sorted alphabetically by the test itself. """ tree = FileSystemTree(EXAMPLE_PATH) _sort_subtrees(tree) rects = tree.generate_treemap((0, 0, 800, 1000)) # This should be one rectangle per file in 'B'. self.assertEqual(len(rects), 4) # UPDATED: # Here, we illustrate the correct order of the returned rectangles. # Note that this corresponds to the folder contents always being # sorted in alphabetical order. rect_f1 = rects[0][0] # f1.txt rect_f2 = rects[1][0] # f2.txt rect_f3 = rects[2][0] # f3.txt rect_f4 = rects[3][0] # f4.txt # The 'A' rectangle is (0, 0, 800, 750). self.assertEqual(rect_f1, (0, 0, 400, 750)) # Note the rounding down on f2. self.assertEqual(rect_f2, (400, 0, 133, 750)) # Note the adjustment to f3 to bring the total width to 800. self.assertEqual(rect_f3, (533, 0, 267, 750)) # The 'f4.txt' rectangle. self.assertEqual(rect_f4, (0, 750, 800, 250))
def test_multiple_nonempty(self): file_tree = FileSystemTree(PATH) result = file_tree.generate_treemap((0, 0, 800, 1000)) lst = [(0, 0, 800, 13), (0, 13, 800, 20), (0, 33, 800, 43), (0, 76, 722, 381), (722, 76, 16, 381), (738, 76, 5, 381), (743, 76, 43, 381), (786, 76, 1, 381), (787, 76, 12, 381), (799, 76, 1, 381)] for i in range(10): self.assertEqual(result[i][0], lst[i])
def test_zero_nonempty(self): file_tree = FileSystemTree(PATH2) original_len = len(file_tree._subtrees) for subtree in file_tree._subtrees: subtree.del_leaf() self.assertEqual(subtree._root, None) self.assertEqual(len(file_tree._subtrees), original_len) result0 = file_tree.generate_treemap((0, 0, 800, 1000)) result1 = file_tree.generate_treemap((0, 0, 1000, 800)) self.assertEqual([], result0) self.assertEqual([], result1)
def test_single_file(self, x, y, width, height): tree = FileSystemTree(os.path.join(EXAMPLE_PATH, 'f4.txt')) rects = tree.generate_treemap((x, y, width, height)) # This should be just a single rectangle and colour returned self.assertEqual(len(rects), 1) rect, colour = rects[0] self.assertEqual(rect, (x, y, width, height)) for i in range(3): self.assertGreaterEqual(colour[i], 0) self.assertLessEqual(colour[i], 255)
def test_one_empty(self): file_tree = FileSystemTree(PATH2) original_len = len(file_tree._subtrees) file_tree._subtrees[-1].del_leaf() self.assertEqual(file_tree._subtrees[-1]._root, None) self.assertEqual(len(file_tree._subtrees), original_len) result = file_tree.generate_treemap((0, 0, 800, 1000)) lst = [(0, 0, 800, 904), (0, 904, 800, 19), (0, 923, 800, 6), (0, 929, 800, 54), (0, 983, 800, 1), (0, 984, 800, 16)] for each in result: self.assertEqual(each[0], lst[result.index(each)]) for each in lst: self.assertEqual(each, result[lst.index(each)][0])
def test_example_data2(self): tree = FileSystemTree('TestFolder') rects = tree.generate_treemap((0, 0, 1100, 900)) self.assertEqual(len(rects), 11) rect_f1 = rects[0][0] rect_f2 = rects[1][0] rect_f3 = rects[2][0] rect_f4 = rects[3][0] rect_f5 = rects[4][0] rect_f6 = rects[5][0] rect_f7 = rects[6][0] rect_f8 = rects[7][0] self.assertEqual(rect_f1, (0, 0, 300, 300)) self.assertEqual(rect_f2, (0, 300, 300, 300)) self.assertEqual(rect_f3, (0, 600, 300, 300)) self.assertEqual(rect_f4, (300, 0, 300, 300)) self.assertEqual(rect_f5, (300, 300, 300, 300)) self.assertEqual(rect_f6, (300, 600, 300, 300)) self.assertEqual(rect_f7, (600, 0, 250, 360)) self.assertEqual(rect_f8, (850, 0, 250, 360))
def test_example_data(self): tree = FileSystemTree(EXAMPLE_PATH) rects = tree.generate_treemap((0, 0, 800, 1000)) # This should be one rectangle per file in 'B'. self.assertEqual(len(rects), 4) # Here, we illustrate the correct order of the returned rectangle. # Note that this again corresponds to the order in which os.listdir # reports the contents of a folder. rect_f1 = rects[0][0] rect_f2 = rects[1][0] rect_f3 = rects[2][0] rect_f4 = rects[3][0] self.assertEqual(rect_f1, (0, 0, 400, 750)) # Note the rounding down on f2. self.assertEqual(rect_f2, (400, 0, 133, 750)) # Note that f3 has a width of 267, to bring the total width of # the 'A' rectangle to exactly 800. self.assertEqual(rect_f3, (533, 0, 267, 750)) self.assertEqual(rect_f4, (0, 750, 800, 250))