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)
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(), "")