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(), "&") self.assertIn(node.to_string(), [v + "&</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(), "&") self.assertIn(node.to_string(), [v + "&</tagname>" for v in valid_strings]) node.serialized = True self.assertTrue(node.serialized)