| @@ -201,11 +201,108 @@ class TestBuilder(TreeEqualityTestCase): | |||
| def test_tag(self): | |||
| """tests for building Tag nodes""" | |||
| tests = [ | |||
| # <ref></ref> | |||
| ([tokens.TagOpenOpen(), tokens.Text(text="ref"), | |||
| tokens.TagCloseOpen(padding=""), tokens.TagOpenClose(), | |||
| tokens.Text(text="ref"), tokens.TagCloseClose()], | |||
| wrap([Tag(wraptext("ref"), wrap([]), [], True, False, "", | |||
| wraptext("ref"))])), | |||
| wrap([Tag(wraptext("ref"), wrap([]), | |||
| closing_tag=wraptext("ref"))])), | |||
| # <ref name></ref> | |||
| ([tokens.TagOpenOpen(), tokens.Text(text="ref"), | |||
| tokens.TagAttrStart(pad_first=" ", pad_before_eq="", | |||
| pad_after_eq=""), | |||
| tokens.Text(text="name"), tokens.TagCloseOpen(padding=""), | |||
| tokens.TagOpenClose(), tokens.Text(text="ref"), | |||
| tokens.TagCloseClose()], | |||
| wrap([Tag(wraptext("ref"), wrap([]), | |||
| attrs=[Attribute(wraptext("name"))])])), | |||
| # <ref name="abc" /> | |||
| ([tokens.TagOpenOpen(), tokens.Text(text="ref"), | |||
| tokens.TagAttrStart(pad_first=" ", pad_before_eq="", | |||
| pad_after_eq=""), | |||
| tokens.Text(text="name"), tokens.TagAttrEquals(), | |||
| tokens.TagAttrQuote(), tokens.Text(text="abc"), | |||
| tokens.TagCloseSelfclose(padding=" ")], | |||
| wrap([Tag(wraptext("ref"), | |||
| attrs=[Attribute(wraptext("name"), wraptext("abc"))], | |||
| self_closing=True, padding=" ")])), | |||
| # <br/> | |||
| ([tokens.TagOpenOpen(), tokens.Text(text="br"), | |||
| tokens.TagCloseSelfclose(padding="")], | |||
| wrap([Tag(wraptext("br"), self_closing=True)])), | |||
| # <li> | |||
| ([tokens.TagOpenOpen(), tokens.Text(text="li"), | |||
| tokens.TagCloseSelfclose(padding="", implicit=True)], | |||
| wrap([Tag(wraptext("li"), self_closing=True, implicit=True)])), | |||
| # </br> | |||
| ([tokens.TagOpenOpen(invalid=True), tokens.Text(text="br"), | |||
| tokens.TagCloseSelfclose(padding="", implicit=True)], | |||
| wrap([Tag(wraptext("br"), self_closing=True, invalid=True, | |||
| implicit=True)])), | |||
| # </br/> | |||
| ([tokens.TagOpenOpen(invalid=True), tokens.Text(text="br"), | |||
| tokens.TagCloseSelfclose(padding="")], | |||
| wrap([Tag(wraptext("br"), self_closing=True, invalid=True)])), | |||
| # <ref name={{abc}} foo="bar {{baz}}" abc={{de}}f ghi=j{{k}}{{l}} | |||
| # mno = "{{p}} [[q]] {{r}}">[[Source]]</ref> | |||
| ([tokens.TagOpenOpen(), tokens.Text(text="ref"), | |||
| tokens.TagAttrStart(pad_first=" ", pad_before_eq="", | |||
| pad_after_eq=""), | |||
| tokens.Text(text="name"), tokens.TagAttrEquals(), | |||
| tokens.TemplateOpen(), tokens.Text(text="abc"), | |||
| tokens.TemplateClose(), | |||
| tokens.TagAttrStart(pad_first=" ", pad_before_eq="", | |||
| pad_after_eq=""), | |||
| tokens.Text(text="foo"), tokens.TagAttrEquals(), | |||
| tokens.TagAttrQuote(), tokens.Text(text="bar "), | |||
| tokens.TemplateOpen(), tokens.Text(text="baz"), | |||
| tokens.TemplateClose(), | |||
| tokens.TagAttrStart(pad_first=" ", pad_before_eq="", | |||
| pad_after_eq=""), | |||
| tokens.Text(text="abc"), tokens.TagAttrEquals(), | |||
| tokens.TemplateOpen(), tokens.Text(text="de"), | |||
| tokens.TemplateClose(), tokens.Text(text="f"), | |||
| tokens.TagAttrStart(pad_first=" ", pad_before_eq="", | |||
| pad_after_eq=""), | |||
| tokens.Text(text="ghi"), tokens.TagAttrEquals(), | |||
| tokens.Text(text="j"), tokens.TemplateOpen(), | |||
| tokens.Text(text="k"), tokens.TemplateClose(), | |||
| tokens.TemplateOpen(), tokens.Text(text="l"), | |||
| tokens.TemplateClose(), | |||
| tokens.TagAttrStart(pad_first=" \n ", pad_before_eq=" ", | |||
| pad_after_eq=" "), | |||
| tokens.Text(text="mno"), tokens.TagAttrEquals(), | |||
| tokens.TagAttrQuote(), tokens.TemplateOpen(), | |||
| tokens.Text(text="p"), tokens.TemplateClose(), | |||
| tokens.Text(text=" "), tokens.WikilinkOpen(), | |||
| tokens.Text(text="q"), tokens.WikilinkClose(), | |||
| tokens.Text(text=" "), tokens.TemplateOpen(), | |||
| tokens.Text(text="r"), tokens.TemplateClose(), | |||
| tokens.TagCloseOpen(padding=""), tokens.WikilinkOpen(), | |||
| tokens.Text(text="Source"), tokens.WikilinkClose(), | |||
| tokens.TagOpenClose(), tokens.Text(text="ref"), | |||
| tokens.TagCloseClose()], | |||
| wrap([Tag(wraptext("ref"), wrap([Wikilink(wraptext("Source"))]), [ | |||
| Attribute(wraptext("name"), | |||
| wrap([Template(wraptext("abc"))]), False), | |||
| Attribute(wraptext("foo"), wrap([Text("bar "), | |||
| Template(wraptext("baz"))]), pad_first=" "), | |||
| Attribute(wraptext("abc"), wrap([Template(wraptext("de")), | |||
| Text("f")]), False), | |||
| Attribute(wraptext("ghi"), wrap([Text("j"), | |||
| Template(wraptext("k")), | |||
| Template(wraptext("l"))]), False), | |||
| Attribute(wraptext("mno"), wrap([Template(wraptext("p")), | |||
| Text(" "), Wikilink(wraptext("q")), Text(" "), | |||
| Template(wraptext("r"))]), True, " \n ", " ", | |||
| " ")])])), | |||
| ] | |||
| for test, valid in tests: | |||
| self.assertWikicodeEqual(valid, self.builder.build(test)) | |||