Пример #1
0
    def test_three_nodes_in_reverse_order(self):
        records = [Record(2, 0), Record(1, 0), Record(0, 0)]
        root = BuildTree(records)

        self.assert_node_is_branch(root, node_id=0, children_count=2)
        self.assert_node_is_leaf(root.children[0], node_id=1)
        self.assert_node_is_leaf(root.children[1], node_id=2)
Пример #2
0
    def test_more_than_two_children(self):
        records = [Record(0, 0), Record(1, 0), Record(2, 0), Record(3, 0)]
        root = BuildTree(records)

        self.assert_node_is_branch(root, node_id=0, children_count=3)
        self.assert_node_is_leaf(root.children[0], node_id=1)
        self.assert_node_is_leaf(root.children[1], node_id=2)
        self.assert_node_is_leaf(root.children[2], node_id=3)
Пример #3
0
 def test_no_root_node(self):
     records = [Record(1, 0), Record(2, 0)]
     # Record with record_id 0 (root) is missing
     with self.assertRaises(ValueError) as err:
         BuildTree(records)
     self.assertEqual(type(err.exception), ValueError)
     self.assertEqual(err.exception.args[0],
                      "Record id is invalid or out of order.")
Пример #4
0
 def test_root_node_has_parent(self):
     records = [Record(0, 1), Record(1, 0)]
     # Root parent_id should be equal to record_id(0)
     with self.assertRaises(ValueError) as err:
         BuildTree(records)
     self.assertEqual(type(err.exception), ValueError)
     self.assertEqual(
         err.exception.args[0],
         "Node record_id should be smaller than it's parent_id.")
Пример #5
0
 def test_higher_id_parent_of_lower_id(self):
     records = [Record(0, 0), Record(2, 0), Record(1, 2)]
     # Record 1 have parent_id(2) greater than record_id(1)
     with self.assertRaises(ValueError) as err:
         BuildTree(records)
     self.assertEqual(type(err.exception), ValueError)
     self.assertEqual(
         err.exception.args[0],
         "Node record_id should be smaller than it's parent_id.")
Пример #6
0
 def test_cycle_indirectly(self):
     records = [
         Record(5, 2),
         Record(3, 2),
         Record(2, 6),
         Record(4, 1),
         Record(1, 0),
         Record(0, 0),
         Record(6, 3)
     ]
     # Cycle caused by Record 2 with parent_id(6) greater than record_id(2)
     with self.assertRaises(ValueError):
         BuildTree(records)
Пример #7
0
 def test_cycle_directly(self):
     records = [
         Record(5, 2),
         Record(3, 2),
         Record(2, 2),
         Record(4, 1),
         Record(1, 0),
         Record(0, 0),
         Record(6, 3)
     ]
     # Cycle caused by Record 2 with parent_id pointing to itself
     with self.assertRaises(ValueError):
         BuildTree(records)
Пример #8
0
 def test_cycle_directly(self):
     records = [
         Record(5, 2),
         Record(3, 2),
         Record(2, 2),
         Record(4, 1),
         Record(1, 0),
         Record(0, 0),
         Record(6, 3)
     ]
     # Cycle caused by Record 2 with parent_id pointing to itself
     with self.assertRaises(ValueError) as err:
         BuildTree(records)
     self.assertEqual(type(err.exception), ValueError)
     self.assertEqual(err.exception.args[0],
                      "Only root should have equal record and parent id.")
Пример #9
0
 def test_cycle_indirectly(self):
     records = [
         Record(5, 2),
         Record(3, 2),
         Record(2, 6),
         Record(4, 1),
         Record(1, 0),
         Record(0, 0),
         Record(6, 3)
     ]
     # Cycle caused by Record 2 with parent_id(6) greater than record_id(2)
     with self.assertRaises(ValueError) as err:
         BuildTree(records)
     self.assertEqual(type(err.exception), ValueError)
     self.assertEqual(
         err.exception.args[0],
         "Node record_id should be smaller than it's parent_id.")
Пример #10
0
    def test_unbalanced_tree(self):
        records = [
            Record(0, 0),
            Record(1, 0),
            Record(2, 0),
            Record(3, 1),
            Record(4, 1),
            Record(5, 1),
            Record(6, 2),
        ]
        root = BuildTree(records)

        self.assert_node_is_branch(root, 0, 2)
        self.assert_node_is_branch(root.children[0], 1, 3)
        self.assert_node_is_branch(root.children[1], 2, 1)
        self.assert_node_is_leaf(root.children[0].children[0], 3)
        self.assert_node_is_leaf(root.children[0].children[1], 4)
        self.assert_node_is_leaf(root.children[0].children[2], 5)
        self.assert_node_is_leaf(root.children[1].children[0], 6)
Пример #11
0
    def test_binary_tree(self):
        records = [
            Record(6, 2),
            Record(0, 0),
            Record(3, 1),
            Record(2, 0),
            Record(4, 1),
            Record(5, 2),
            Record(1, 0)
        ]
        root = build_tree(records)

        self.assert_node_is_branch(root, 0, 2)
        self.assert_node_is_branch(root.children[0], 1, 2)
        self.assert_node_is_branch(root.children[1], 2, 2)
        self.assert_node_is_leaf(root.children[0].children[0], 3)
        self.assert_node_is_leaf(root.children[0].children[1], 4)
        self.assert_node_is_leaf(root.children[1].children[0], 5)
        self.assert_node_is_leaf(root.children[1].children[1], 6)
Пример #12
0
 def test_no_root_node(self):
     records = [Record(1, 0), Record(2, 0)]
     # Record with record_id 0 (root) is missing
     with self.assertRaises(ValueError):
         BuildTree(records)
Пример #13
0
 def test_root_node_has_parent(self):
     records = [Record(0, 1), Record(1, 0)]
     # Root parent_id should be equal to record_id(0)
     with self.assertRaises(ValueError):
         BuildTree(records)
Пример #14
0
    def test_one_node(self):
        records = [Record(0, 0)]
        root = BuildTree(records)

        self.assert_node_is_leaf(root, node_id=0)
Пример #15
0
 def test_higher_id_parent_of_lower_id(self):
     records = [Record(0, 0), Record(2, 0), Record(1, 2)]
     # Record 1 have parent_id(2) greater than record_id(1)
     with self.assertRaises(ValueError):
         BuildTree(records)
Пример #16
0
 def test_non_continuous(self):
     records = [Record(2, 0), Record(4, 2), Record(1, 0), Record(0, 0)]
     # Record with record_id 3 is missing
     with self.assertRaises(ValueError):
         BuildTree(records)