Пример #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(), "")
Пример #2
0
    def test_tag_node(self):
        """
        Tests the TagNode class.
        """
        root = RootNode()
        node = TagNode("tagname", {"a": "b", "c": "d"})

        self.assertFalse(node.closed)
        self.assertFalse(node.serialized)

        root.add_child(node)

        self.assertEqual(root.node_count, 1)
        self.assertEqual(root.closed_node_count, 0)
        self.assertFalse(node.closed)
        self.assertFalse(node.serialized)

        valid_strings = ("<tagname a=\"b\" c=\"d\">",
                         "<tagname c=\"d\" a=\"b\">")
        self.assertIn(node.start_to_string(), valid_strings)
        self.assertEqual(node.end_to_string(), "</tagname>")
        self.assertEqual(node.children_to_string(), "")
        self.assertIn(node.to_string(), [v + "</tagname>" for v in
                                         valid_strings])

        node.add_child(EntityrefNode("amp"))

        self.assertEqual(root.node_count, 2)
        self.assertEqual(root.closed_node_count, 1)
        self.assertFalse(node.closed)
        self.assertFalse(node.serialized)

        self.assertIn(node.start_to_string(), valid_strings)
        self.assertEqual(node.end_to_string(), "</tagname>")
        self.assertEqual(node.children_to_string(), "&amp;")
        self.assertIn(node.to_string(), [v + "&amp;</tagname>" for v in
                                         valid_strings])

        node.close()

        self.assertEqual(root.node_count, 2)
        self.assertEqual(root.closed_node_count, 2)
        self.assertTrue(node.closed)
        self.assertFalse(node.serialized)

        self.assertIn(node.start_to_string(), valid_strings)
        self.assertEqual(node.end_to_string(), "</tagname>")
        self.assertEqual(node.children_to_string(), "&amp;")
        self.assertIn(node.to_string(), [v + "&amp;</tagname>" for v in
                                         valid_strings])

        node.serialized = True

        self.assertTrue(node.serialized)