Ejemplo n.º 1
0
    def test_root_node(self):
        """
        Tests the RootNode class.
        """
        class TestHTMLNode(HTMLNode):
            def to_string(self):
                return "Node" + str(self.position)

        root = RootNode()
        node1 = TestHTMLNode()
        node2 = TagNode("tagname", {})
        node3 = TagNode("tagname", {})

        root.add_child(node1)

        self.assertEqual(root.node_count, 1)
        self.assertEqual(root.closed_node_count, 1)
        self.assertTrue(root.complete)

        root.add_child(node2)

        self.assertEqual(root.node_count, 2)
        self.assertEqual(root.closed_node_count, 1)
        self.assertFalse(root.complete)

        node2.close()

        self.assertEqual(root.node_count, 2)
        self.assertEqual(root.closed_node_count, 2)
        self.assertTrue(root.complete)

        root.add_child(node3)

        self.assertEqual(root.node_count, 3)
        self.assertEqual(root.closed_node_count, 2)
        self.assertFalse(root.complete)

        root.close_all()

        self.assertEqual(root.node_count, 3)
        self.assertEqual(root.closed_node_count, 3)
        self.assertTrue(root.complete)

        self.assertEqual(root.start_to_string(), "")
        self.assertEqual(root.children_to_string(),
                         "Node0<tagname></tagname><tagname></tagname>")
        self.assertEqual(root.end_to_string(), "")