コード例 #1
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)