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('