|
@@ -26,6 +26,8 @@ import unittest |
|
|
from mwparserfromhell.nodes import (Argument, Comment, Heading, HTMLEntity, |
|
|
from mwparserfromhell.nodes import (Argument, Comment, Heading, HTMLEntity, |
|
|
Tag, Template, Text, Wikilink) |
|
|
Tag, Template, Text, Wikilink) |
|
|
from mwparserfromhell.nodes.extras import Attribute, Parameter |
|
|
from mwparserfromhell.nodes.extras import Attribute, Parameter |
|
|
|
|
|
from mwparserfromhell.parser import tokens |
|
|
|
|
|
from mwparserfromhell.parser.builder import Builder |
|
|
from mwparserfromhell.smart_list import SmartList |
|
|
from mwparserfromhell.smart_list import SmartList |
|
|
from mwparserfromhell.wikicode import Wikicode |
|
|
from mwparserfromhell.wikicode import Wikicode |
|
|
|
|
|
|
|
@@ -36,13 +38,34 @@ wrap = lambda L: Wikicode(SmartList(L)) |
|
|
class TestBuilder(TreeEqualityTestCase): |
|
|
class TestBuilder(TreeEqualityTestCase): |
|
|
"""Tests for the builder, which turns tokens into Wikicode objects.""" |
|
|
"""Tests for the builder, which turns tokens into Wikicode objects.""" |
|
|
|
|
|
|
|
|
|
|
|
def setUp(self): |
|
|
|
|
|
self.builder = Builder() |
|
|
|
|
|
|
|
|
def test_text(self): |
|
|
def test_text(self): |
|
|
"""tests for building Text nodes""" |
|
|
"""tests for building Text nodes""" |
|
|
pass |
|
|
|
|
|
|
|
|
tests = [ |
|
|
|
|
|
([tokens.Text(text="foobar")], wrap([Text("foobar")])), |
|
|
|
|
|
([tokens.Text(text="fóóbar")], wrap([Text("fóóbar")])), |
|
|
|
|
|
([tokens.Text(text="spam"), tokens.Text(text="eggs")], |
|
|
|
|
|
wrap([Text("spam"), Text("eggs")])), |
|
|
|
|
|
] |
|
|
|
|
|
for test, valid in tests: |
|
|
|
|
|
self.assertWikicodeEqual(valid, self.builder.build(test)) |
|
|
|
|
|
|
|
|
def test_template(self): |
|
|
def test_template(self): |
|
|
"""tests for building Template nodes""" |
|
|
"""tests for building Template nodes""" |
|
|
pass |
|
|
|
|
|
|
|
|
tests = [ |
|
|
|
|
|
([tokens.TemplateOpen(), tokens.Text(text="foobar"), tokens.TemplateClose()], |
|
|
|
|
|
wrap([Template(wrap([Text("foobar")]))])), |
|
|
|
|
|
([tokens.TemplateOpen(), tokens.Text(text="spam"), tokens.Text(text="eggs"), tokens.TemplateClose()], |
|
|
|
|
|
wrap([Template(wrap([Text("spam"), Text("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)])])), |
|
|
|
|
|
([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")]))])])), |
|
|
|
|
|
] |
|
|
|
|
|
for test, valid in tests: |
|
|
|
|
|
self.assertWikicodeEqual(valid, self.builder.build(test)) |
|
|
|
|
|
|
|
|
def test_argument(self): |
|
|
def test_argument(self): |
|
|
"""tests for building Argument nodes""" |
|
|
"""tests for building Argument nodes""" |
|
|