X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wrpylib.git/blobdiff_plain/fd5bf5e041b316273d03af9f70029d368a055890..f6c4fcdf278c631e8900c06845eebfe36aa5dc51:/tests/test_mwmarkup.py diff --git a/tests/test_mwmarkup.py b/tests/test_mwmarkup.py index 52f7cdb..9955656 100644 --- a/tests/test_mwmarkup.py +++ b/tests/test_mwmarkup.py @@ -1,131 +1,149 @@ -#!/usr/bin/python2.7 -# -*- coding: iso-8859-15 -*- +#!/usr/bin/python3.4 +import unittest +import mwparserfromhell import wrpylib.mwmarkup -def test_find_template(): - wikitext = u'''== Allgemeines == - {{Rodelbahnbox - | Position = 47.309820 N 9.986508 E - | Position oben = - | Höhe oben = 1244 - | Position unten = - | Höhe unten = 806 - | Länge = 5045 - | Schwierigkeit = - | Lawinen = gelegentlich - | Betreiber = - | Öffentliche Anreise = Ja - | Gehzeit = 105 - | Aufstieg getrennt = Nein - | Aufstiegshilfe = Nein - | Beleuchtungsanlage = Nein - | Beleuchtungstage = - | Rodelverleih = Ja - | Gütesiegel = - | Webauskunft = - | Telefonauskunft = +43-664-1808482 (Bergkristallhütte) - | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg - | In Übersichtskarte = Ja - | Forumid = 72 - }} - Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.''' - start, end = wrpylib.mwmarkup.find_template(wikitext, u'Rodelbahnbox') - assert start == wikitext.find(u'{{') - assert end == wikitext.find(u'}}')+2 +class TestMwParserFromHell(unittest.TestCase): + def setUp(self): + self.maxDiff = None + def test_find_template(self): + wikitext = '''== Allgemeines == + {{Rodelbahnbox + | Position = 47.309820 N 9.986508 E + | Position oben = + | Höhe oben = 1244 + | Position unten = + | Höhe unten = 806 + | Länge = 5045 + | Schwierigkeit = + | Lawinen = gelegentlich + | Betreiber = + | Öffentliche Anreise = Ja + | Gehzeit = 105 + | Aufstieg getrennt = Nein + | Aufstiegshilfe = Nein + | Beleuchtungsanlage = Nein + | Beleuchtungstage = + | Rodelverleih = Ja + | Gütesiegel = + | Webauskunft = + | Telefonauskunft = +43-664-1808482 (Bergkristallhütte) + | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg + | In Übersichtskarte = Ja + | Forumid = 72 + }} + Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.''' + wikicode = mwparserfromhell.parse(wikitext) + rb = list(wikicode.filter_templates())[0] + self.assertEqual(rb.name.strip(), 'Rodelbahnbox') + self.assertEqual(rb.get('Aufstiegshilfe').value.strip(), 'Nein') + self.assertEqual(rb[:2], '{{') + self.assertEqual(rb[-2:], '}}') -def test_split_template(): - wikitext = u'''== Allgemeines == - {{Rodelbahnbox - | Position = 47.309820 N 9.986508 E - | Position oben = - | Höhe oben = 1244 - | Position unten = - | Höhe unten = 806 - | Länge = 5045 - | Schwierigkeit = - | Lawinen = gelegentlich - | Betreiber = - | Öffentliche Anreise = Ja - | Gehzeit = 105 - | Aufstieg getrennt = Nein - | Aufstiegshilfe = Nein - | Beleuchtungsanlage = Nein - | Beleuchtungstage = - | Rodelverleih = Ja - | Gütesiegel = - | Webauskunft = - | Telefonauskunft = +43-664-1808482 (Bergkristallhütte) - | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg - | In Übersichtskarte = Ja - | Forumid = 72 - }} - Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.''' - start, end = wrpylib.mwmarkup.find_template(wikitext, u'Rodelbahnbox') - template_title, parameters = wrpylib.mwmarkup.split_template(wikitext[start:end]) - assert template_title == u'Rodelbahnbox' - assert len(parameters) == 22 - assert parameters['Position'] == u'47.309820 N 9.986508 E' - assert parameters['Telefonauskunft'] == u'+43-664-1808482 (Bergkristallhütte)' - assert parameters['Schwierigkeit'] == u'' + def test_template_to_table(self): + wikitext = '{{Rodelbahnbox | Unbenannt | Position = 47.309820 N 9.986508 E | Aufstieg möglich = Ja }}' + wikicode = mwparserfromhell.parse(wikitext) + template = list(wikicode.filter_templates())[0] + self.assertEqual(template.name.strip(), 'Rodelbahnbox') + self.assertEqual(template.params[0].strip(), 'Unbenannt') + self.assertEqual(template.params[1].name.strip(), 'Position') + self.assertEqual(template.params[1].value.strip(), '47.309820 N 9.986508 E') + self.assertEqual(template.params[2].name.strip(), 'Aufstieg möglich') + self.assertEqual(template.params[2].value.strip(), 'Ja') + template = mwparserfromhell.nodes.template.Template('Rodelbahnbox') + template.add(1, 'Unbenannt') + template.add('Position', '47.309820 N 9.986508 E') + template.add('Aufstieg möglich', 'Ja') + self.assertEqual(template, '{{Rodelbahnbox|Unbenannt|Position=47.309820 N 9.986508 E|Aufstieg möglich=Ja}}') -def test_create_template(): - wikitext = u'''{{Nicetemplate|Red|Bold|Position=Top|Alignment=Right}}''' - template_title, parameters = wrpylib.mwmarkup.split_template(wikitext) - print parameters - keys = [u'1', u'2', u'Position', u'Alignment'] - values = [parameters[k] for k in keys] - wikitext_generated = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:]) - wikitext_table = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:], True) - assert wikitext_generated == wikitext + wrpylib.mwmarkup.format_template_table(template) + self.assertEqual(template, + '{{Rodelbahnbox\n' + + '| Unbenannt\n' + + '| Position = 47.309820 N 9.986508 E\n' + + '| Aufstieg möglich = Ja\n' + + '}}') + wrpylib.mwmarkup.format_template_table(template, 18) + self.assertEqual(template, + '{{Rodelbahnbox\n' + + '| Unbenannt\n' + + '| Position = 47.309820 N 9.986508 E\n' + + '| Aufstieg möglich = Ja\n' + + '}}') -def test_find_tag(): - wikitext = u'This is my first tag and my second tag.' - start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tags') - assert (start, content, endtag, end) == (None, None, None, None) - start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tag') - assert (start, content, endtag, end) == (8, 13, 25, 31) - start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tag', end) - assert (start, content, endtag, end) == (36, 41, 54, 60) - wikitext = u'This is .' - start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tag') - assert (start, content, endtag, end) == (8, None, None, 27) + def test_split_template(self): + wikitext = '''== Allgemeines == + {{Rodelbahnbox + | Position = 47.309820 N 9.986508 E + | Position oben = + | Höhe oben = 1244 + | Position unten = + | Höhe unten = 806 + | Länge = 5045 + | Schwierigkeit = + | Lawinen = gelegentlich + | Betreiber = + | Öffentliche Anreise = Ja + | Gehzeit = 105 + | Aufstieg getrennt = Nein + | Aufstiegshilfe = Nein + | Beleuchtungsanlage = Nein + | Beleuchtungstage = + | Rodelverleih = Ja + | Gütesiegel = + | Webauskunft = + | Telefonauskunft = +43-664-1808482 (Bergkristallhütte) + | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg + | In Übersichtskarte = Ja + | Forumid = 72 + }} + Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.''' + wikicode = mwparserfromhell.parse(wikitext) + template = wikicode.filter_templates(matches='Rodelbahnbox')[0] + self.assertEqual(template.name.strip(), 'Rodelbahnbox') + self.assertEqual(len(template.params), 22) + self.assertEqual(template.get('Position').value.strip(), '47.309820 N 9.986508 E') + self.assertEqual(template.get('Telefonauskunft').value.strip(), '+43-664-1808482 (Bergkristallhütte)') + self.assertEqual(template.get('Schwierigkeit').value.strip(), '') + def test_create_template(self): + template = mwparserfromhell.nodes.template.Template('Rodelbahnbox') + template.add(1, 'Unbenannt') + template.add('Position', '47.309820 N 9.986508 E') + template.add('Aufstieg möglich', 'Ja') + self.assertEqual(template, '{{Rodelbahnbox|Unbenannt|Position=47.309820 N 9.986508 E|Aufstieg möglich=Ja}}') -def test_parse_googlemap(): - wikitext = u''' - - (Parkplatz)47.114958,11.266026 - Erster Parkplatz - - (Gasthaus) 47.114715, 11.266262, Alt Bärnbad (Gasthaus) - 6#FF014E9A - 47.114715,11.266262 - 47.114135,11.268381 - 47.113421,11.269322 - 47.11277,11.269979 - 47.112408,11.271119 - - ''' - center, zoom, coords, paths = wrpylib.mwmarkup.parse_googlemap(wikitext) - assert center == (11.272337, 47.113291) - assert zoom == 15 - assert coords == [ - (11.266026, 47.114958, 'Parkplatz', 'Erster Parkplatz'), - (11.266262, 47.114715, 'Gasthaus', u'Alt Bärnbad (Gasthaus)')] - assert paths == [ - ('6#FF014E9A', [ - (11.266262, 47.114715, None, None), - (11.268381, 47.114135, None, None), - (11.269322, 47.113421, None, None), - (11.269979, 47.11277, None, None), - (11.271119, 47.112408, None, None)])] - try: - result = wrpylib.mwmarkup.parse_googlemap(wikitext.replace('