Example #1
0
 def test_integration2(self):
     """an even more audacious test for building a horrible wikicode mess"""
     # {{a|b|{{c|[[d]]{{{e}}}}}}}[[f|{{{g}}}<!--h-->]]{{i|j=&nbsp;}}
     test = [tokens.TemplateOpen(), tokens.Text(text="a"),
             tokens.TemplateParamSeparator(), tokens.Text(text="b"),
             tokens.TemplateParamSeparator(), tokens.TemplateOpen(),
             tokens.Text(text="c"), tokens.TemplateParamSeparator(),
             tokens.WikilinkOpen(), tokens.Text(text="d"),
             tokens.WikilinkClose(), tokens.ArgumentOpen(),
             tokens.Text(text="e"), tokens.ArgumentClose(),
             tokens.TemplateClose(), tokens.TemplateClose(),
             tokens.WikilinkOpen(), tokens.Text(text="f"),
             tokens.WikilinkSeparator(), tokens.ArgumentOpen(),
             tokens.Text(text="g"), tokens.ArgumentClose(),
             tokens.CommentStart(), tokens.Text(text="h"),
             tokens.CommentEnd(), tokens.WikilinkClose(),
             tokens.TemplateOpen(), tokens.Text(text="i"),
             tokens.TemplateParamSeparator(), tokens.Text(text="j"),
             tokens.TemplateParamEquals(), tokens.HTMLEntityStart(),
             tokens.Text(text="nbsp"), tokens.HTMLEntityEnd(),
             tokens.TemplateClose()]
     valid = wrap(
         [Template(wraptext("a"), params=[Parameter(wraptext("1"), wraptext(
         "b"), showkey=False), Parameter(wraptext("2"), wrap([Template(
         wraptext("c"), params=[Parameter(wraptext("1"), wrap([Wikilink(
         wraptext("d")), Argument(wraptext("e"))]), showkey=False)])]),
         showkey=False)]), Wikilink(wraptext("f"), wrap([Argument(wraptext(
         "g")), Comment("h")])), Template(wraptext("i"), params=[
         Parameter(wraptext("j"), wrap([HTMLEntity("nbsp",
         named=True)]))])])
     self.assertWikicodeEqual(valid, self.builder.build(test))
Example #2
0
 def test_argument(self):
     """tests for building Argument nodes"""
     tests = [
         ([
             tokens.ArgumentOpen(),
             tokens.Text(text="foobar"),
             tokens.ArgumentClose()
         ], wrap([Argument(wraptext("foobar"))])),
         ([
             tokens.ArgumentOpen(),
             tokens.Text(text="spam"),
             tokens.Text(text="eggs"),
             tokens.ArgumentClose()
         ], wrap([Argument(wraptext("spam", "eggs"))])),
         ([
             tokens.ArgumentOpen(),
             tokens.Text(text="foo"),
             tokens.ArgumentSeparator(),
             tokens.Text(text="bar"),
             tokens.ArgumentClose()
         ], wrap([Argument(wraptext("foo"), wraptext("bar"))])),
         ([
             tokens.ArgumentOpen(),
             tokens.Text(text="foo"),
             tokens.Text(text="bar"),
             tokens.ArgumentSeparator(),
             tokens.Text(text="baz"),
             tokens.Text(text="biz"),
             tokens.ArgumentClose()
         ], wrap([Argument(wraptext("foo", "bar"), wraptext("baz",
                                                            "biz"))])),
     ]
     for test, valid in tests:
         self.assertWikicodeEqual(valid, self.builder.build(test))
Example #3
0
 def test_strip(self):
     """test Argument.__strip__()"""
     node = Argument(wraptext("foobar"))
     node2 = Argument(wraptext("foo"), wraptext("bar"))
     for a in (True, False):
         for b in (True, False):
             self.assertIs(None, node.__strip__(a, b))
             self.assertEqual("bar", node2.__strip__(a, b))
Example #4
0
 def test_default(self):
     """test getter/setter for the default attribute"""
     default = wraptext("baz")
     node1 = Argument(wraptext("foobar"))
     node2 = Argument(wraptext("foobar"), default)
     self.assertIs(None, node1.default)
     self.assertIs(default, node2.default)
     node1.default = "buzz"
     node2.default = None
     self.assertWikicodeEqual(wraptext("buzz"), node1.default)
     self.assertIs(None, node2.default)
Example #5
0
 def test_name(self):
     """test getter/setter for the name attribute"""
     name = wraptext("foobar")
     node1 = Argument(name)
     node2 = Argument(name, wraptext("baz"))
     self.assertIs(name, node1.name)
     self.assertIs(name, node2.name)
     node1.name = "héhehé"
     node2.name = "héhehé"
     self.assertWikicodeEqual(wraptext("héhehé"), node1.name)
     self.assertWikicodeEqual(wraptext("héhehé"), node2.name)
Example #6
0
 def test_children(self):
     """test Argument.__children__()"""
     node1 = Argument(wraptext("foobar"))
     node2 = Argument(wraptext("foo"), wrap([Text("bar"), Text("baz")]))
     gen1 = node1.__children__()
     gen2 = node2.__children__()
     self.assertIs(node1.name, next(gen1))
     self.assertIs(node2.name, next(gen2))
     self.assertIs(node2.default, next(gen2))
     self.assertRaises(StopIteration, next, gen1)
     self.assertRaises(StopIteration, next, gen2)
Example #7
0
 def test_showtree(self):
     """test Argument.__showtree__()"""
     output = []
     getter, marker = object(), object()
     get = lambda code: output.append((getter, code))
     mark = lambda: output.append(marker)
     node1 = Argument(wraptext("foobar"))
     node2 = Argument(wraptext("foo"), wraptext("bar"))
     node1.__showtree__(output.append, get, mark)
     node2.__showtree__(output.append, get, mark)
     valid = [
         "{{{", (getter, node1.name), "}}}", "{{{", (getter, node2.name),
         "    | ", marker, (getter, node2.default), "}}}"]
     self.assertEqual(valid, output)
Example #8
0
 def test_unicode(self):
     """test Argument.__unicode__()"""
     node = Argument(wraptext("foobar"))
     self.assertEqual("{{{foobar}}}", str(node))
     node2 = Argument(wraptext("foo"), wraptext("bar"))
     self.assertEqual("{{{foo|bar}}}", str(node2))
Example #9
0
 def test_strip(self):
     """test Argument.__strip__()"""
     node1 = Argument(wraptext("foobar"))
     node2 = Argument(wraptext("foo"), wraptext("bar"))
     self.assertIs(None, node1.__strip__())
     self.assertEqual("bar", node2.__strip__())