@@ -30,7 +30,7 @@ from mwparserfromhell.smart_list import SmartList | |||
from mwparserfromhell.wikicode import Wikicode | |||
wrap = lambda L: Wikicode(SmartList(L)) | |||
wraptext = lambda t: wrap([Text(t)]) | |||
wraptext = lambda *args: wrap([Text(t) for t in args]) | |||
def getnodes(code): | |||
"""Iterate over all child nodes of a given parent node. | |||
@@ -26,16 +26,16 @@ import unittest | |||
from mwparserfromhell.compat import str | |||
from mwparserfromhell.nodes import Argument, Text | |||
from ._test_tree_equality import TreeEqualityTestCase, getnodes, wrap | |||
from ._test_tree_equality import TreeEqualityTestCase, getnodes, wrap, wraptext | |||
class TestArgument(TreeEqualityTestCase): | |||
"""Test cases for the Argument node.""" | |||
def test_unicode(self): | |||
"""test Argument.__unicode__()""" | |||
node = Argument(wrap([Text("foobar")])) | |||
node = Argument(wraptext("foobar")) | |||
self.assertEqual("{{{foobar}}}", str(node)) | |||
node2 = Argument(wrap([Text("foo")]), wrap([Text("bar")])) | |||
node2 = Argument(wraptext("foo"), wraptext("bar")) | |||
self.assertEqual("{{{foo|bar}}}", str(node2)) | |||
def test_iternodes(self): | |||
@@ -57,8 +57,8 @@ class TestArgument(TreeEqualityTestCase): | |||
def test_strip(self): | |||
"""test Argument.__strip__()""" | |||
node = Argument(wrap([Text("foobar")])) | |||
node2 = Argument(wrap([Text("foo")]), wrap([Text("bar")])) | |||
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)) | |||
@@ -70,8 +70,8 @@ class TestArgument(TreeEqualityTestCase): | |||
getter, marker = object(), object() | |||
get = lambda code: output.append((getter, code)) | |||
mark = lambda: output.append(marker) | |||
node1 = Argument(wrap([Text("foobar")])) | |||
node2 = Argument(wrap([Text("foo")]), wrap([Text("bar")])) | |||
node1 = Argument(wraptext("foobar")) | |||
node2 = Argument(wraptext("foo"), wraptext("bar")) | |||
node1.__showtree__(output.append, get, mark) | |||
node2.__showtree__(output.append, get, mark) | |||
valid = [ | |||
@@ -81,26 +81,26 @@ class TestArgument(TreeEqualityTestCase): | |||
def test_name(self): | |||
"""test getter/setter for the name attribute""" | |||
name = wrap([Text("foobar")]) | |||
name = wraptext("foobar") | |||
node1 = Argument(name) | |||
node2 = Argument(name, wrap([Text("baz")])) | |||
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(wrap([Text("héhehé")]), node1.name) | |||
self.assertWikicodeEqual(wrap([Text("héhehé")]), node2.name) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node1.name) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node2.name) | |||
def test_default(self): | |||
"""test getter/setter for the default attribute""" | |||
default = wrap([Text("baz")]) | |||
node1 = Argument(wrap([Text("foobar")])) | |||
node2 = Argument(wrap([Text("foobar")]), default) | |||
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(wrap([Text("buzz")]), node1.default) | |||
self.assertWikicodeEqual(wraptext("buzz"), node1.default) | |||
self.assertIs(None, node2.default) | |||
if __name__ == "__main__": | |||
@@ -29,7 +29,7 @@ from mwparserfromhell.nodes.extras import Attribute, Parameter | |||
from mwparserfromhell.parser import tokens | |||
from mwparserfromhell.parser.builder import Builder | |||
from ._test_tree_equality import TreeEqualityTestCase, wrap | |||
from ._test_tree_equality import TreeEqualityTestCase, wrap, wraptext | |||
class TestBuilder(TreeEqualityTestCase): | |||
"""Tests for the builder, which turns tokens into Wikicode objects.""" | |||
@@ -40,10 +40,10 @@ class TestBuilder(TreeEqualityTestCase): | |||
def test_text(self): | |||
"""tests for building Text nodes""" | |||
tests = [ | |||
([tokens.Text(text="foobar")], wrap([Text("foobar")])), | |||
([tokens.Text(text="fóóbar")], wrap([Text("fóóbar")])), | |||
([tokens.Text(text="foobar")], wraptext("foobar")), | |||
([tokens.Text(text="fóóbar")], wraptext("fóóbar")), | |||
([tokens.Text(text="spam"), tokens.Text(text="eggs")], | |||
wrap([Text("spam"), Text("eggs")])), | |||
wraptext("spam", "eggs")), | |||
] | |||
for test, valid in tests: | |||
self.assertWikicodeEqual(valid, self.builder.build(test)) | |||
@@ -53,25 +53,24 @@ class TestBuilder(TreeEqualityTestCase): | |||
tests = [ | |||
([tokens.TemplateOpen(), tokens.Text(text="foobar"), | |||
tokens.TemplateClose()], | |||
wrap([Template(wrap([Text("foobar")]))])), | |||
wrap([Template(wraptext("foobar"))])), | |||
([tokens.TemplateOpen(), tokens.Text(text="spam"), | |||
tokens.Text(text="eggs"), tokens.TemplateClose()], | |||
wrap([Template(wrap([Text("spam"), Text("eggs")]))])), | |||
wrap([Template(wraptext("spam", "eggs"))])), | |||
([tokens.TemplateOpen(), tokens.Text(text="foo"), | |||
tokens.TemplateParamSeparator(), tokens.Text(text="bar"), | |||
tokens.TemplateClose()], | |||
wrap([Template(wrap([Text("foo")]), params=[ | |||
Parameter(wrap([Text("1")]), wrap([Text("bar")]), | |||
showkey=False)])])), | |||
wrap([Template(wraptext("foo"), params=[ | |||
Parameter(wraptext("1"), wraptext("bar"), showkey=False)])])), | |||
([tokens.TemplateOpen(), tokens.Text(text="foo"), | |||
tokens.TemplateParamSeparator(), tokens.Text(text="bar"), | |||
tokens.TemplateParamEquals(), tokens.Text(text="baz"), | |||
tokens.TemplateClose()], | |||
wrap([Template(wrap([Text("foo")]), params=[ | |||
Parameter(wrap([Text("bar")]), wrap([Text("baz")]))])])), | |||
wrap([Template(wraptext("foo"), params=[ | |||
Parameter(wraptext("bar"), wraptext("baz"))])])), | |||
([tokens.TemplateOpen(), tokens.Text(text="foo"), | |||
tokens.TemplateParamSeparator(), tokens.Text(text="bar"), | |||
@@ -82,14 +81,12 @@ class TestBuilder(TreeEqualityTestCase): | |||
tokens.TemplateParamEquals(), tokens.Text(text="buff"), | |||
tokens.TemplateParamSeparator(), tokens.Text(text="baff"), | |||
tokens.TemplateClose()], | |||
wrap([Template(wrap([Text("foo")]), params=[ | |||
Parameter(wrap([Text("bar")]), wrap([Text("baz")])), | |||
Parameter(wrap([Text("1")]), wrap([Text("biz")]), | |||
showkey=False), | |||
Parameter(wrap([Text("2")]), wrap([Text("buzz")]), | |||
showkey=False), | |||
Parameter(wrap([Text("3")]), wrap([Text("buff")])), | |||
Parameter(wrap([Text("3")]), wrap([Text("baff")]), | |||
wrap([Template(wraptext("foo"), params=[ | |||
Parameter(wraptext("bar"), wraptext("baz")), | |||
Parameter(wraptext("1"), wraptext("biz"), showkey=False), | |||
Parameter(wraptext("2"), wraptext("buzz"), showkey=False), | |||
Parameter(wraptext("3"), wraptext("buff")), | |||
Parameter(wraptext("3"), wraptext("baff"), | |||
showkey=False)])])), | |||
] | |||
for test, valid in tests: | |||
@@ -100,23 +97,22 @@ class TestBuilder(TreeEqualityTestCase): | |||
tests = [ | |||
([tokens.ArgumentOpen(), tokens.Text(text="foobar"), | |||
tokens.ArgumentClose()], | |||
wrap([Argument(wrap([Text("foobar")]))])), | |||
wrap([Argument(wraptext("foobar"))])), | |||
([tokens.ArgumentOpen(), tokens.Text(text="spam"), | |||
tokens.Text(text="eggs"), tokens.ArgumentClose()], | |||
wrap([Argument(wrap([Text("spam"), Text("eggs")]))])), | |||
wrap([Argument(wraptext("spam", "eggs"))])), | |||
([tokens.ArgumentOpen(), tokens.Text(text="foo"), | |||
tokens.ArgumentSeparator(), tokens.Text(text="bar"), | |||
tokens.ArgumentClose()], | |||
wrap([Argument(wrap([Text("foo")]), wrap([Text("bar")]))])), | |||
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(wrap([Text("foo"), Text("bar")]), | |||
wrap([Text("baz"), Text("biz")]))])), | |||
wrap([Argument(wraptext("foo", "bar"), wraptext("baz", "biz"))])), | |||
] | |||
for test, valid in tests: | |||
self.assertWikicodeEqual(valid, self.builder.build(test)) | |||
@@ -126,23 +122,22 @@ class TestBuilder(TreeEqualityTestCase): | |||
tests = [ | |||
([tokens.WikilinkOpen(), tokens.Text(text="foobar"), | |||
tokens.WikilinkClose()], | |||
wrap([Wikilink(wrap([Text("foobar")]))])), | |||
wrap([Wikilink(wraptext("foobar"))])), | |||
([tokens.WikilinkOpen(), tokens.Text(text="spam"), | |||
tokens.Text(text="eggs"), tokens.WikilinkClose()], | |||
wrap([Wikilink(wrap([Text("spam"), Text("eggs")]))])), | |||
wrap([Wikilink(wraptext("spam", "eggs"))])), | |||
([tokens.WikilinkOpen(), tokens.Text(text="foo"), | |||
tokens.WikilinkSeparator(), tokens.Text(text="bar"), | |||
tokens.WikilinkClose()], | |||
wrap([Wikilink(wrap([Text("foo")]), wrap([Text("bar")]))])), | |||
wrap([Wikilink(wraptext("foo"), wraptext("bar"))])), | |||
([tokens.WikilinkOpen(), tokens.Text(text="foo"), | |||
tokens.Text(text="bar"), tokens.WikilinkSeparator(), | |||
tokens.Text(text="baz"), tokens.Text(text="biz"), | |||
tokens.WikilinkClose()], | |||
wrap([Wikilink(wrap([Text("foo"), Text("bar")]), | |||
wrap([Text("baz"), Text("biz")]))])), | |||
wrap([Wikilink(wraptext("foo", "bar"), wraptext("baz", "biz"))])), | |||
] | |||
for test, valid in tests: | |||
self.assertWikicodeEqual(valid, self.builder.build(test)) | |||
@@ -172,11 +167,11 @@ class TestBuilder(TreeEqualityTestCase): | |||
tests = [ | |||
([tokens.HeadingStart(level=2), tokens.Text(text="foobar"), | |||
tokens.HeadingEnd()], | |||
wrap([Heading(wrap([Text("foobar")]), 2)])), | |||
wrap([Heading(wraptext("foobar"), 2)])), | |||
([tokens.HeadingStart(level=4), tokens.Text(text="spam"), | |||
tokens.Text(text="eggs"), tokens.HeadingEnd()], | |||
wrap([Heading(wrap([Text("spam"), Text("eggs")]), 4)])), | |||
wrap([Heading(wraptext("spam", "eggs"), 4)])), | |||
] | |||
for test, valid in tests: | |||
self.assertWikicodeEqual(valid, self.builder.build(test)) | |||
@@ -186,11 +181,11 @@ class TestBuilder(TreeEqualityTestCase): | |||
tests = [ | |||
([tokens.CommentStart(), tokens.Text(text="foobar"), | |||
tokens.CommentEnd()], | |||
wrap([Comment(wrap([Text("foobar")]))])), | |||
wrap([Comment(wraptext("foobar"))])), | |||
([tokens.CommentStart(), tokens.Text(text="spam"), | |||
tokens.Text(text="eggs"), tokens.CommentEnd()], | |||
wrap([Comment(wrap([Text("spam"), Text("eggs")]))])), | |||
wrap([Comment(wraptext("spam", "eggs"))])), | |||
] | |||
for test, valid in tests: | |||
self.assertWikicodeEqual(valid, self.builder.build(test)) | |||
@@ -214,10 +209,10 @@ class TestBuilder(TreeEqualityTestCase): | |||
tokens.TemplateOpen(), tokens.Text(text="bin"), | |||
tokens.TemplateClose(), tokens.TemplateClose()] | |||
valid = wrap( | |||
[Template(wrap([Template(wrap([Template(wrap([Template(wrap([Text( | |||
"foo")])), Text("bar")]), params=[Parameter(wrap([Text("baz")]), | |||
wrap([Text("biz")]))]), Text("buzz")])), Text("usr")]), params=[ | |||
Parameter(wrap([Text("1")]), wrap([Template(wrap([Text("bin")]))]), | |||
[Template(wrap([Template(wrap([Template(wrap([Template(wraptext( | |||
"foo")), Text("bar")]), params=[Parameter(wraptext("baz"), | |||
wraptext("biz"))]), Text("buzz")])), Text("usr")]), params=[ | |||
Parameter(wraptext("1"), wrap([Template(wraptext("bin"))]), | |||
showkey=False)])]) | |||
self.assertWikicodeEqual(valid, self.builder.build(test)) | |||
@@ -243,14 +238,14 @@ class TestBuilder(TreeEqualityTestCase): | |||
tokens.Text(text="nbsp"), tokens.HTMLEntityEnd(), | |||
tokens.TemplateClose()] | |||
valid = wrap( | |||
[Template(wrap([Text("a")]), params=[Parameter(wrap([Text("1")]), | |||
wrap([Text("b")]), showkey=False), Parameter(wrap([Text("2")]), | |||
wrap([Template(wrap([Text("c")]), params=[Parameter(wrap([Text("1") | |||
]), wrap([Wikilink(wrap([Text("d")])), Argument(wrap([Text("e")]))] | |||
), showkey=False)])]), showkey=False)]), Wikilink(wrap([Text("f")] | |||
), wrap([Argument(wrap([Text("g")])), Comment(wrap([Text("h")]))]) | |||
), Template(wrap([Text("i")]), params=[Parameter(wrap([Text("j")]), | |||
wrap([HTMLEntity("nbsp", named=True)]))])]) | |||
[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(wraptext("h"))])), Template(wraptext("i"), params=[ | |||
Parameter(wraptext("j"), wrap([HTMLEntity("nbsp", | |||
named=True)]))])]) | |||
self.assertWikicodeEqual(valid, self.builder.build(test)) | |||
if __name__ == "__main__": | |||
@@ -26,16 +26,16 @@ import unittest | |||
from mwparserfromhell.compat import str | |||
from mwparserfromhell.nodes import Heading, Text | |||
from ._test_tree_equality import TreeEqualityTestCase, getnodes, wrap | |||
from ._test_tree_equality import TreeEqualityTestCase, getnodes, wrap, wraptext | |||
class TestHeading(TreeEqualityTestCase): | |||
"""Test cases for the Heading node.""" | |||
def test_unicode(self): | |||
"""test Heading.__unicode__()""" | |||
node = Heading(wrap([Text("foobar")]), 2) | |||
node = Heading(wraptext("foobar"), 2) | |||
self.assertEqual("==foobar==", str(node)) | |||
node2 = Heading(wrap([Text(" zzz ")]), 5) | |||
node2 = Heading(wraptext(" zzz "), 5) | |||
self.assertEqual("===== zzz =====", str(node2)) | |||
def test_iternodes(self): | |||
@@ -50,7 +50,7 @@ class TestHeading(TreeEqualityTestCase): | |||
def test_strip(self): | |||
"""test Heading.__strip__()""" | |||
node = Heading(wrap([Text("foobar")]), 3) | |||
node = Heading(wraptext("foobar"), 3) | |||
for a in (True, False): | |||
for b in (True, False): | |||
self.assertEqual("foobar", node.__strip__(a, b)) | |||
@@ -60,8 +60,8 @@ class TestHeading(TreeEqualityTestCase): | |||
output = [] | |||
getter = object() | |||
get = lambda code: output.append((getter, code)) | |||
node1 = Heading(wrap([Text("foobar")]), 3) | |||
node2 = Heading(wrap([Text(" baz ")]), 4) | |||
node1 = Heading(wraptext("foobar"), 3) | |||
node2 = Heading(wraptext(" baz "), 4) | |||
node1.__showtree__(output.append, get, None) | |||
node2.__showtree__(output.append, get, None) | |||
valid = ["===", (getter, node1.title), "===", | |||
@@ -70,20 +70,18 @@ class TestHeading(TreeEqualityTestCase): | |||
def test_title(self): | |||
"""test getter/setter for the title attribute""" | |||
title = wrap([Text("foobar")]) | |||
title = wraptext("foobar") | |||
node = Heading(title, 3) | |||
self.assertIs(title, node.title) | |||
node.title = "héhehé" | |||
self.assertWikicodeEqual(wrap([Text("héhehé")]), node.title) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node.title) | |||
def test_level(self): | |||
"""test getter/setter for the level attribute""" | |||
node = Heading(wrap([Text("foobar")]), 3) | |||
node = Heading(wraptext("foobar"), 3) | |||
self.assertEqual(3, node.level) | |||
node.level = 5 | |||
self.assertEqual(5, node.level) | |||
node.level = True | |||
self.assertEqual(1, node.level) | |||
self.assertRaises(ValueError, setattr, node, "level", 0) | |||
self.assertRaises(ValueError, setattr, node, "level", 7) | |||
self.assertRaises(ValueError, setattr, node, "level", "abc") | |||
@@ -27,43 +27,43 @@ from mwparserfromhell.compat import str | |||
from mwparserfromhell.nodes import Text | |||
from mwparserfromhell.nodes.extras import Parameter | |||
from ._test_tree_equality import TreeEqualityTestCase, wrap | |||
from ._test_tree_equality import TreeEqualityTestCase, wrap, wraptext | |||
class TestParameter(TreeEqualityTestCase): | |||
"""Test cases for the Parameter node extra.""" | |||
def test_unicode(self): | |||
"""test Parameter.__unicode__()""" | |||
node = Parameter(wrap([Text("1")]), wrap([Text("foo")]), showkey=False) | |||
node = Parameter(wraptext("1"), wraptext("foo"), showkey=False) | |||
self.assertEqual("foo", str(node)) | |||
node2 = Parameter(wrap([Text("foo")]), wrap([Text("bar")])) | |||
node2 = Parameter(wraptext("foo"), wraptext("bar")) | |||
self.assertEqual("foo=bar", str(node2)) | |||
def test_name(self): | |||
"""test getter/setter for the name attribute""" | |||
name1 = wrap([Text("1")]) | |||
name2 = wrap([Text("foobar")]) | |||
node1 = Parameter(name1, wrap([Text("foobar")]), showkey=False) | |||
node2 = Parameter(name2, wrap([Text("baz")])) | |||
name1 = wraptext("1") | |||
name2 = wraptext("foobar") | |||
node1 = Parameter(name1, wraptext("foobar"), showkey=False) | |||
node2 = Parameter(name2, wraptext("baz")) | |||
self.assertIs(name1, node1.name) | |||
self.assertIs(name2, node2.name) | |||
node1.name = "héhehé" | |||
node2.name = "héhehé" | |||
self.assertWikicodeEqual(wrap([Text("héhehé")]), node1.name) | |||
self.assertWikicodeEqual(wrap([Text("héhehé")]), node2.name) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node1.name) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node2.name) | |||
def test_value(self): | |||
"""test getter/setter for the value attribute""" | |||
value = wrap([Text("bar")]) | |||
node = Parameter(wrap([Text("foo")]), value) | |||
value = wraptext("bar") | |||
node = Parameter(wraptext("foo"), value) | |||
self.assertIs(value, node.value) | |||
node.value = "héhehé" | |||
self.assertWikicodeEqual(wrap([Text("héhehé")]), node.value) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node.value) | |||
def test_showkey(self): | |||
"""test getter/setter for the showkey attribute""" | |||
node1 = Parameter(wrap([Text("1")]), wrap([Text("foo")]), showkey=False) | |||
node2 = Parameter(wrap([Text("foo")]), wrap([Text("bar")])) | |||
node1 = Parameter(wraptext("1"), wraptext("foo"), showkey=False) | |||
node2 = Parameter(wraptext("foo"), wraptext("bar")) | |||
self.assertFalse(node1.showkey) | |||
self.assertTrue(node2.showkey) | |||
node1.showkey = True | |||
@@ -26,10 +26,8 @@ import unittest | |||
from mwparserfromhell import parser | |||
from mwparserfromhell.nodes import Template, Text, Wikilink | |||
from mwparserfromhell.nodes.extras import Parameter | |||
from mwparserfromhell.smart_list import SmartList | |||
from mwparserfromhell.wikicode import Wikicode | |||
from ._test_tree_equality import TreeEqualityTestCase | |||
from ._test_tree_equality import TreeEqualityTestCase, wrap, wraptext | |||
from .compat import range | |||
class TestParser(TreeEqualityTestCase): | |||
@@ -45,18 +43,17 @@ class TestParser(TreeEqualityTestCase): | |||
def test_parsing(self): | |||
"""integration test for parsing overall""" | |||
text = "this is text; {{this|is=a|template={{with|[[links]]|in}}it}}" | |||
wrap = lambda L: Wikicode(SmartList(L)) | |||
expected = wrap([ | |||
Text("this is text; "), | |||
Template(wrap([Text("this")]), [ | |||
Parameter(wrap([Text("is")]), wrap([Text("a")])), | |||
Parameter(wrap([Text("template")]), wrap([ | |||
Template(wrap([Text("with")]), [ | |||
Parameter(wrap([Text("1")]), | |||
wrap([Wikilink(wrap([Text("links")]))]), | |||
Template(wraptext("this"), [ | |||
Parameter(wraptext("is"), wraptext("a")), | |||
Parameter(wraptext("template"), wrap([ | |||
Template(wraptext("with"), [ | |||
Parameter(wraptext("1"), | |||
wrap([Wikilink(wraptext("links"))]), | |||
showkey=False), | |||
Parameter(wrap([Text("2")]), | |||
wrap([Text("in")]), showkey=False) | |||
Parameter(wraptext("2"), | |||
wraptext("in"), showkey=False) | |||
]), | |||
Text("it") | |||
])) | |||
@@ -24,33 +24,28 @@ from __future__ import unicode_literals | |||
import unittest | |||
from mwparserfromhell.nodes import Template, Text | |||
from mwparserfromhell.smart_list import SmartList | |||
from mwparserfromhell.utils import parse_anything | |||
from mwparserfromhell.wikicode import Wikicode | |||
from ._test_tree_equality import TreeEqualityTestCase | |||
from ._test_tree_equality import TreeEqualityTestCase, wrap, wraptext | |||
class TestUtils(TreeEqualityTestCase): | |||
"""Tests for the utils module, which provides parse_anything().""" | |||
def test_parse_anything_valid(self): | |||
"""tests for valid input to utils.parse_anything()""" | |||
wrap = lambda L: Wikicode(SmartList(L)) | |||
textify = lambda L: wrap([Text(item) for item in L]) | |||
tests = [ | |||
(wrap([Text("foobar")]), textify(["foobar"])), | |||
(Template(wrap([Text("spam")])), | |||
wrap([Template(textify(["spam"]))])), | |||
("fóóbar", textify(["fóóbar"])), | |||
(b"foob\xc3\xa1r", textify(["foobár"])), | |||
(123, textify(["123"])), | |||
(True, textify(["True"])), | |||
(wraptext("foobar"), wraptext("foobar")), | |||
(Template(wraptext("spam")), wrap([Template(wraptext("spam"))])), | |||
("fóóbar", wraptext("fóóbar")), | |||
(b"foob\xc3\xa1r", wraptext("foobár")), | |||
(123, wraptext("123")), | |||
(True, wraptext("True")), | |||
(None, wrap([])), | |||
([Text("foo"), Text("bar"), Text("baz")], | |||
textify(["foo", "bar", "baz"])), | |||
([wrap([Text("foo")]), Text("bar"), "baz", 123, 456], | |||
textify(["foo", "bar", "baz", "123", "456"])), | |||
([[[([[((("foo",),),)], "bar"],)]]], textify(["foo", "bar"])) | |||
wraptext("foo", "bar", "baz")), | |||
([wraptext("foo"), Text("bar"), "baz", 123, 456], | |||
wraptext("foo", "bar", "baz", "123", "456")), | |||
([[[([[((("foo",),),)], "bar"],)]]], wraptext("foo", "bar")) | |||
] | |||
for test, valid in tests: | |||
self.assertWikicodeEqual(valid, parse_anything(test)) | |||
@@ -26,16 +26,16 @@ import unittest | |||
from mwparserfromhell.compat import str | |||
from mwparserfromhell.nodes import Text, Wikilink | |||
from ._test_tree_equality import TreeEqualityTestCase, getnodes, wrap | |||
from ._test_tree_equality import TreeEqualityTestCase, getnodes, wrap, wraptext | |||
class TestWikilink(TreeEqualityTestCase): | |||
"""Test cases for the Wikilink node.""" | |||
def test_unicode(self): | |||
"""test Wikilink.__unicode__()""" | |||
node = Wikilink(wrap([Text("foobar")])) | |||
node = Wikilink(wraptext("foobar")) | |||
self.assertEqual("[[foobar]]", str(node)) | |||
node2 = Wikilink(wrap([Text("foo")]), wrap([Text("bar")])) | |||
node2 = Wikilink(wraptext("foo"), wraptext("bar")) | |||
self.assertEqual("[[foo|bar]]", str(node2)) | |||
def test_iternodes(self): | |||
@@ -57,8 +57,8 @@ class TestWikilink(TreeEqualityTestCase): | |||
def test_strip(self): | |||
"""test Wikilink.__strip__()""" | |||
node = Wikilink(wrap([Text("foobar")])) | |||
node2 = Wikilink(wrap([Text("foo")]), wrap([Text("bar")])) | |||
node = Wikilink(wraptext("foobar")) | |||
node2 = Wikilink(wraptext("foo"), wraptext("bar")) | |||
for a in (True, False): | |||
for b in (True, False): | |||
self.assertEqual("foobar", node.__strip__(a, b)) | |||
@@ -70,8 +70,8 @@ class TestWikilink(TreeEqualityTestCase): | |||
getter, marker = object(), object() | |||
get = lambda code: output.append((getter, code)) | |||
mark = lambda: output.append(marker) | |||
node1 = Wikilink(wrap([Text("foobar")])) | |||
node2 = Wikilink(wrap([Text("foo")]), wrap([Text("bar")])) | |||
node1 = Wikilink(wraptext("foobar")) | |||
node2 = Wikilink(wraptext("foo"), wraptext("bar")) | |||
node1.__showtree__(output.append, get, mark) | |||
node2.__showtree__(output.append, get, mark) | |||
valid = [ | |||
@@ -81,26 +81,26 @@ class TestWikilink(TreeEqualityTestCase): | |||
def test_title(self): | |||
"""test getter/setter for the title attribute""" | |||
title = wrap([Text("foobar")]) | |||
title = wraptext("foobar") | |||
node1 = Wikilink(title) | |||
node2 = Wikilink(title, wrap([Text("baz")])) | |||
node2 = Wikilink(title, wraptext("baz")) | |||
self.assertIs(title, node1.title) | |||
self.assertIs(title, node2.title) | |||
node1.title = "héhehé" | |||
node2.title = "héhehé" | |||
self.assertWikicodeEqual(wrap([Text("héhehé")]), node1.title) | |||
self.assertWikicodeEqual(wrap([Text("héhehé")]), node2.title) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node1.title) | |||
self.assertWikicodeEqual(wraptext("héhehé"), node2.title) | |||
def test_text(self): | |||
"""test getter/setter for the text attribute""" | |||
text = wrap([Text("baz")]) | |||
node1 = Wikilink(wrap([Text("foobar")])) | |||
node2 = Wikilink(wrap([Text("foobar")]), text) | |||
text = wraptext("baz") | |||
node1 = Wikilink(wraptext("foobar")) | |||
node2 = Wikilink(wraptext("foobar"), text) | |||
self.assertIs(None, node1.text) | |||
self.assertIs(text, node2.text) | |||
node1.text = "buzz" | |||
node2.text = None | |||
self.assertWikicodeEqual(wrap([Text("buzz")]), node1.text) | |||
self.assertWikicodeEqual(wraptext("buzz"), node1.text) | |||
self.assertIs(None, node2.text) | |||
if __name__ == "__main__": | |||