コード例 #1
0
    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))
コード例 #2
0
def run_treemap_file_system(path: str) -> None:
    """Run a treemap visualisation for the given path's file structure.

    Precondition: <path> is a valid path to a file or folder.
    """
    file_tree = FileSystemTree(path)
    run_visualisation(file_tree)
コード例 #3
0
 def test_delete_selected_leaf(self):
     tree = FileSystemTree('TestFolder')
     self.assertEqual(tree.data_size, 11)
     leaf = tree._subtrees[2]._subtrees[0]._subtrees[0]
     leaf.delete_selected_leaf()
     self.assertEqual(tree._subtrees[2]._subtrees[0]._subtrees[0]._root,
                      'T10.txt')
     self.assertEqual(tree.data_size, 10)
コード例 #4
0
 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])
コード例 #5
0
    def test_example_data_parent_tree_of_subtrees(self):
        tree = FileSystemTree(EXAMPLE_PATH)

        self.assertEqual(len(tree._subtrees), 2)

        for subtree in tree._subtrees:
            # Note the use of assertIs rather than assertEqual.
            # This checks ids rather than values.
            self.assertIs(subtree._parent_tree, tree)
コード例 #6
0
    def test_example_data_basic(self):
        tree = FileSystemTree(EXAMPLE_PATH)
        self.assertEqual(tree._root, 'B')
        self.assertIs(tree._parent_tree, None)

        self.assertEqual(tree.data_size, 40)

        # Check colours
        for i in range(3):
            self.assertGreaterEqual(tree.colour[i], 0)
            self.assertLessEqual(tree.colour[i], 255)
コード例 #7
0
 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)
コード例 #8
0
    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)
コード例 #9
0
    def test_single_file(self):
        tree = FileSystemTree(os.path.join(EXAMPLE_PATH, 'f4.txt'))
        self.assertEqual(tree._root, 'f4.txt')
        self.assertEqual(tree._subtrees, [])
        self.assertIs(tree._parent_tree, None)

        self.assertEqual(tree.data_size, 10)

        # Check colours
        for i in range(3):
            self.assertGreaterEqual(tree.colour[i], 0)
            self.assertLessEqual(tree.colour[i], 255)
コード例 #10
0
 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])
コード例 #11
0
    def test_example_data_subtree_order(self):
        """NOTE: the order of the subtrees for a FileSystemTree object
        *must* match the order of the items returned by os.listdir.
        """
        tree = FileSystemTree(EXAMPLE_PATH)

        self.assertEqual(len(tree._subtrees), 2)
        first, second = tree._subtrees

        self.assertEqual(first._root, 'A')
        self.assertEqual(len(first._subtrees), 3)
        self.assertEqual(first.data_size, 30)

        self.assertEqual(second._root, 'f4.txt')
        self.assertEqual(second._subtrees, [])
        self.assertEqual(second.data_size, 10)
コード例 #12
0
    def test_example_data_subtree_order(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)

        self.assertEqual(len(tree._subtrees), 2)
        first, second = tree._subtrees

        self.assertEqual(first._root, 'A')
        self.assertEqual(len(first._subtrees), 3)
        self.assertEqual(first.data_size, 30)

        self.assertEqual(second._root, 'f4.txt')
        self.assertEqual(second._subtrees, [])
        self.assertEqual(second.data_size, 10)
コード例 #13
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))
コード例 #14
0
    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))
コード例 #15
0
 def test_empty_folder(self):
     tree = FileSystemTree('empty folder case')
     tree.delete_empty_trees()
     self.assertEqual(len(tree._subtrees), 1)
コード例 #16
0
 def test1(self):
     path1 = 'C:\\Users\\User\\Desktop\\csc148\\assignments\\a1'
     t = FileSystemTree(path1)
コード例 #17
0
 def test_delete_child(self):
     tree = FileSystemTree('TestFolder\\F1')
     child = tree._subtrees[0]
     tree.delete_child(child)
     self.assertEqual(tree._subtrees[0]._root, 'T2.txt')
コード例 #18
0
 def test_find_leaf5(self):
     tree = FileSystemTree('TestFolder')
     leaf = tree.find_leaf((0, 0, 1100, 900), (90, 800))
     self.assertEqual(leaf._root, 'T3.txt')
コード例 #19
0
 def test_find_leaf3(self):
     tree = FileSystemTree('TestFolder\\F1')
     leaf = tree.find_leaf((0, 0, 1100, 900), (600, 500))
     self.assertEqual(leaf._root, 'T2.txt')
コード例 #20
0
 def test_delete_single(self):
     tree = FileSystemTree('TestFolder\\F1\\T1.txt')
コード例 #21
0
ファイル: treemap_visualiser.py プロジェクト: parkji30/SWPR
    """
    pop_tree = PopulationTree(True)
    run_visualisation(pop_tree)


def set_selected_leaf(leaf_info, selected_leaf):
    """Compares selected leaf to the first item in leaf_info. If the two
    are different or if selected_leaf is an empty string, selected_leaf
    will be set to that item. If the first item in leaf_info and the
    selected_leaf are the same string, selected_leaf will be set to an
    empty string.

    Returns the selected_leaf as either None or a new AbstractTree leaf.

    @type leaf_info: list[str]
    @type selected_leaf: str
    @rtype: str
    """
    if leaf_info[0] == selected_leaf:
        return ['', '']
    else:
        selected_leaf = leaf_info[0]
        selected_leaf_data_size = leaf_info[1]
    return [selected_leaf, selected_leaf_data_size]


if __name__ == '__main__':
    path = '/Users/a16472/Desktop/Balco'
    fst = FileSystemTree(path)
    run_visualisation(fst)