Example #1
0
    def test_add_child(self):
        # Build up tree and check if children and parents are set correctly
        root_node = node.Node("RootNode")
        self.assertIsNone(root_node.parent)
        self.assertEqual(root_node.children, [])
        self.assertEqual(root_node.value, "RootNode")

        node_one = node.Node("One")
        self.assertEqual(node_one.value, "One")
        root_node.add_child(node_one)
        self.assertIsNone(root_node.parent)
        self.assertEqual(root_node.children, [node_one])
        self.assertIs(node_one.parent, root_node)
        self.assertEqual(node_one.children, [])

        node_two = node.Node("Two")
        self.assertEqual(node_two.value, "Two")
        node_one.add_child(node_two)
        self.assertIsNone(root_node.parent)
        self.assertEqual(root_node.children, [node_one])
        self.assertIs(node_one.parent, root_node)
        self.assertEqual(node_one.children, [node_two])
        self.assertIs(node_two.parent, node_one)
        self.assertEqual(node_two.children, [])

        node_three = node.Node("Three")
        self.assertEqual(node_three.value, "Three")
        root_node.add_child(node_three)
        self.assertIsNone(root_node.parent)
        self.assertEqual(root_node.children, [node_one, node_three])
        self.assertIs(node_one.parent, root_node)
        self.assertEqual(node_one.children, [node_two])
        self.assertIs(node_two.parent, node_one)
        self.assertEqual(node_two.children, [])
        self.assertIs(node_three.parent, root_node)
        self.assertEqual(node_three.children, [])
Example #2
0
    def test_yield_nodes_on_level_below_raises_error_if_level_negative(self):
        root_node = node.Node("RootNode", weight=0.01)
        node_one = node.Node("One", weight=0.1)
        node_two = node.Node("Two", weight=0.2)
        node_three = node.Node("Three", weight=0.3)
        node_four = node.Node("Four", weight=0.4)
        node_five = node.Node("Five", weight=0.5)

        root_node.children = [node_one, node_two, node_three]
        node_one.parent = root_node
        node_two.parent = root_node
        node_three.parent = root_node
        node_one.children = [node_four, node_five]
        node_four.parent = node_one
        node_five.parent = node_one

        with self.assertRaises(AssertionError):
            list(node.yield_nodes_on_level_below(root_node, -1))
Example #3
0
    def test_weight_initial_set(self):
        root_node = node.Node("RootNode", weight=0.01)
        node_one = node.Node("One", weight=0.1)
        node_two = node.Node("Two", weight=0.2)
        node_three = node.Node("Three", weight=0.3)
        node_four = node.Node("Four", weight=0.4)
        node_five = node.Node("Five", weight=0.5)

        root_node.children = [node_one, node_two, node_three]
        node_one.parent = root_node
        node_two.parent = root_node
        node_three.parent = root_node
        node_one.children = [node_four, node_five]
        node_four.parent = node_one
        node_five.parent = node_one

        self.assertEqual(root_node.weight, 0.01)
        self.assertEqual(node_one.weight, 0.1)
        self.assertEqual(node_two.weight, 0.2)
        self.assertEqual(node_three.weight, 0.3)
        self.assertEqual(node_four.weight, 0.4)
        self.assertEqual(node_five.weight, 0.5)
Example #4
0
    def test_yield_leaf_nodes(self):
        root_node = node.Node("RootNode", weight=0.01)
        node_one = node.Node("One", weight=0.1)
        node_two = node.Node("Two", weight=0.2)
        node_three = node.Node("Three", weight=0.3)
        node_four = node.Node("Four", weight=0.4)
        node_five = node.Node("Five", weight=0.5)

        root_node.children = [node_one, node_two, node_three]
        node_one.parent = root_node
        node_two.parent = root_node
        node_three.parent = root_node
        node_one.children = [node_four, node_five]
        node_four.parent = node_one
        node_five.parent = node_one

        leaf_nodes_of_root_node = list(node.yield_leaf_nodes(root_node))
        self.assertEqual(len(leaf_nodes_of_root_node), 4)
        self.assertEqual(leaf_nodes_of_root_node[0].value, "Four")
        self.assertEqual(leaf_nodes_of_root_node[1].value, "Five")
        self.assertEqual(leaf_nodes_of_root_node[2].value, "Two")
        self.assertEqual(leaf_nodes_of_root_node[3].value, "Three")
Example #5
0
    def test_yield_nodes_on_level_below(self):
        root_node = node.Node("RootNode", weight=0.01)
        node_one = node.Node("One", weight=0.1)
        node_two = node.Node("Two", weight=0.2)
        node_three = node.Node("Three", weight=0.3)
        node_four = node.Node("Four", weight=0.4)
        node_five = node.Node("Five", weight=0.5)

        root_node.children = [node_one, node_two, node_three]
        node_one.parent = root_node
        node_two.parent = root_node
        node_three.parent = root_node
        node_one.children = [node_four, node_five]
        node_four.parent = node_one
        node_five.parent = node_one

        level_zero_below_nodes = list(
            node.yield_nodes_on_level_below(root_node, 0))
        self.assertEqual(len(level_zero_below_nodes), 1)
        self.assertEqual(level_zero_below_nodes[0].value, "RootNode")

        level_one_below_nodes = list(
            node.yield_nodes_on_level_below(root_node, 1))
        self.assertEqual(len(level_one_below_nodes), 3)
        self.assertEqual(level_one_below_nodes[0].value, "One")
        self.assertEqual(level_one_below_nodes[1].value, "Two")
        self.assertEqual(level_one_below_nodes[2].value, "Three")

        level_two_below_nodes = list(
            node.yield_nodes_on_level_below(root_node, 2))
        self.assertEqual(len(level_two_below_nodes), 2)
        self.assertEqual(level_two_below_nodes[0].value, "Four")
        self.assertEqual(level_two_below_nodes[1].value, "Five")

        level_three_below_nodes = list(
            node.yield_nodes_on_level_below(root_node, 3))
        self.assertEqual(len(level_three_below_nodes), 0)