|
|
@@ -30,6 +30,7 @@ from ._test_tree_equality import TreeEqualityTestCase, getnodes, wrap, wraptext |
|
|
|
|
|
|
|
agen = lambda name, value: Attribute(wraptext(name), wraptext(value)) |
|
|
|
agennq = lambda name, value: Attribute(wraptext(name), wraptext(value), False) |
|
|
|
agenp = lambda name, v, a, b, c: Attribute(wraptext(name), v, True, a, b, c) |
|
|
|
agenpnv = lambda name, a, b, c: Attribute(wraptext(name), None, True, a, b, c) |
|
|
|
|
|
|
|
class TestTag(TreeEqualityTestCase): |
|
|
@@ -224,5 +225,91 @@ class TestTag(TreeEqualityTestCase): |
|
|
|
self.assertWikicodeEqual(parsed, node.closing_tag) |
|
|
|
self.assertEqual("<ref>foobar</ref {{ignore me}}>", node) |
|
|
|
|
|
|
|
def test_has(self): |
|
|
|
"""test Tag.has()""" |
|
|
|
node = Tag(wraptext("ref"), wraptext("cite"), [agen("name", "foo")]) |
|
|
|
self.assertTrue(node.has("name")) |
|
|
|
self.assertTrue(node.has(" name ")) |
|
|
|
self.assertTrue(node.has(wraptext("name"))) |
|
|
|
self.assertFalse(node.has("Name")) |
|
|
|
self.assertFalse(node.has("foo")) |
|
|
|
|
|
|
|
attrs = [agen("id", "foo"), agenp("class", "bar", " ", "\n", "\n"), |
|
|
|
agen("foo", "bar"), agenpnv("foo", " ", " \n ", " \t")] |
|
|
|
node2 = Tag(wraptext("div"), attrs=attrs, self_closing=True) |
|
|
|
self.assertTrue(node2.has("id")) |
|
|
|
self.assertTrue(node2.has("class")) |
|
|
|
self.assertTrue(node2.has(attrs[1].pad_first + str(attrs[1].name) + |
|
|
|
attrs[1].pad_before_eq)) |
|
|
|
self.assertTrue(node2.has(attrs[3])) |
|
|
|
self.assertTrue(node2.has(str(attrs[3]))) |
|
|
|
self.assertFalse(node2.has("idclass")) |
|
|
|
self.assertFalse(node2.has("id class")) |
|
|
|
self.assertFalse(node2.has("id=foo")) |
|
|
|
|
|
|
|
def test_get(self): |
|
|
|
"""test Tag.get()""" |
|
|
|
attrs = [agen("name", "foo")] |
|
|
|
node = Tag(wraptext("ref"), wraptext("cite"), attrs) |
|
|
|
self.assertIs(attrs[0], node.get("name")) |
|
|
|
self.assertIs(attrs[0], node.get(" name ")) |
|
|
|
self.assertIs(attrs[0], node.get(wraptext("name"))) |
|
|
|
self.assertRaises(ValueError, node.get, "Name") |
|
|
|
self.assertRaises(ValueError, node.get, "foo") |
|
|
|
|
|
|
|
attrs = [agen("id", "foo"), agenp("class", "bar", " ", "\n", "\n"), |
|
|
|
agen("foo", "bar"), agenpnv("foo", " ", " \n ", " \t")] |
|
|
|
node2 = Tag(wraptext("div"), attrs=attrs, self_closing=True) |
|
|
|
self.assertIs(attrs[0], node2.get("id")) |
|
|
|
self.assertIs(attrs[1], node2.get("class")) |
|
|
|
self.assertIs(attrs[1], node2.get( |
|
|
|
attrs[1].pad_first + str(attrs[1].name) + attrs[1].pad_before_eq)) |
|
|
|
self.assertIs(attrs[3], node2.get(attrs[3])) |
|
|
|
self.assertIs(attrs[3], node2.get(str(attrs[3]))) |
|
|
|
self.assertIs(attrs[3], node2.get(" foo")) |
|
|
|
self.assertRaises(ValueError, node2.get, "idclass") |
|
|
|
self.assertRaises(ValueError, node2.get, "id class") |
|
|
|
self.assertRaises(ValueError, node2.get, "id=foo") |
|
|
|
|
|
|
|
def test_add(self): |
|
|
|
"""test Tag.add()""" |
|
|
|
node = Tag(wraptext("ref"), wraptext("cite")) |
|
|
|
node.add("name", "value") |
|
|
|
node.add("name", "value", quoted=False) |
|
|
|
node.add("name") |
|
|
|
node.add(1, False) |
|
|
|
node.add("style", "{{foobar}}") |
|
|
|
node.add("name", "value", True, "\n", " ", " ") |
|
|
|
attr1 = ' name="value"' |
|
|
|
attr2 = " name=value" |
|
|
|
attr3 = " name" |
|
|
|
attr4 = ' 1="False"' |
|
|
|
attr5 = ' style="{{foobar}}"' |
|
|
|
attr6 = '\nname = "value"' |
|
|
|
self.assertEqual(attr1, node.attributes[0]) |
|
|
|
self.assertEqual(attr2, node.attributes[1]) |
|
|
|
self.assertEqual(attr3, node.attributes[2]) |
|
|
|
self.assertEqual(attr4, node.attributes[3]) |
|
|
|
self.assertEqual(attr5, node.attributes[4]) |
|
|
|
self.assertEqual(attr6, node.attributes[5]) |
|
|
|
self.assertEqual(attr6, node.get("name")) |
|
|
|
self.assertWikicodeEqual(wrap([Template(wraptext("foobar"))]), |
|
|
|
node.attributes[4].value) |
|
|
|
self.assertEqual("".join(("<ref", attr1, attr2, attr3, attr4, attr5, |
|
|
|
attr6, ">cite</ref>")), node) |
|
|
|
|
|
|
|
def test_remove(self): |
|
|
|
"""test Tag.remove()""" |
|
|
|
attrs = [agen("id", "foo"), agenp("class", "bar", " ", "\n", "\n"), |
|
|
|
agen("foo", "bar"), agenpnv("foo", " ", " \n ", " \t")] |
|
|
|
node = Tag(wraptext("div"), attrs=attrs, self_closing=True) |
|
|
|
node.remove("class") |
|
|
|
self.assertEqual('<div id="foo" foo="bar" foo \n />', node) |
|
|
|
node.remove("foo") |
|
|
|
self.assertEqual('<div id="foo"/>', node) |
|
|
|
self.assertRaises(ValueError, node.remove, "foo") |
|
|
|
node.remove("id") |
|
|
|
self.assertEqual('<div/>', node) |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
unittest.main(verbosity=2) |