#!/usr/bin/python2.7 # -*- coding: iso-8859-15 -*- import wrpylib.mwmarkup import unittest class TestMwMarkup(unittest.TestCase): 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.''' start, end = wrpylib.mwmarkup.find_template(wikitext, 'Rodelbahnbox') assert start == wikitext.find('{{') assert end == wikitext.find('}}')+2 def test_TemplateValidator(self): v = wrpylib.mwmarkup.TemplateValidator() value = '{{Rodelbahnbox | Unbenannt | Position = 47.309820 N 9.986508 E | Aufstieg möglich = Ja }}' title, anonym_params, named_params = v.to_python(value) assert title == 'Rodelbahnbox' assert anonym_params == ['Unbenannt'] assert list(named_params.keys()) == ['Position', 'Aufstieg möglich'] assert list(named_params.values()) == ['47.309820 N 9.986508 E', 'Ja'] value2 = v.from_python((title, anonym_params, named_params)) assert value2 == '{{Rodelbahnbox|Unbenannt|Position=47.309820 N 9.986508 E|Aufstieg möglich=Ja}}' v = wrpylib.mwmarkup.TemplateValidator(as_table=True) value3 = v.from_python((title, anonym_params, named_params)) assert value3 == \ '{{Rodelbahnbox\n' + \ '| Unbenannt\n' + \ '| Position = 47.309820 N 9.986508 E\n' + \ '| Aufstieg möglich = Ja\n' + \ '}}' v = wrpylib.mwmarkup.TemplateValidator(strip=False) title, anonym_params, named_params = v.to_python(value) assert title == 'Rodelbahnbox ' assert anonym_params == [' Unbenannt '] assert list(named_params.keys()) == [' Position ', ' Aufstieg möglich '] assert list(named_params.values()) == [' 47.309820 N 9.986508 E ', ' Ja '] 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.''' start, end = wrpylib.mwmarkup.find_template(wikitext, 'Rodelbahnbox') template_title, parameters = wrpylib.mwmarkup.split_template(wikitext[start:end]) assert template_title == 'Rodelbahnbox' assert len(parameters) == 22 assert parameters['Position'] == '47.309820 N 9.986508 E' assert parameters['Telefonauskunft'] == '+43-664-1808482 (Bergkristallhütte)' assert parameters['Schwierigkeit'] == '' def test_create_template(self): wikitext = '''{{Nicetemplate|Red|Bold|Position=Top|Alignment=Right}}''' template_title, parameters = wrpylib.mwmarkup.split_template(wikitext) keys = ['1', '2', 'Position', '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 def test_find_tag(self): wikitext = 'This is my first tag and my second tag.' start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tags') assert (start, content, endtag, end) == (None, None, None, None) start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tag') assert (start, content, endtag, end) == (8, 13, 25, 31) start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tag', end) assert (start, content, endtag, end) == (36, 41, 54, 60) wikitext = 'This is .' start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tag') assert (start, content, endtag, end) == (8, None, None, 27) def test_parse_googlemap(self): wikitext = ''' (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 ''' attributes, coords, paths = wrpylib.mwmarkup.parse_googlemap(wikitext) assert attributes['lon'] == 11.272337 assert attributes['lat'] == 47.113291 assert attributes['zoom'] == 15 assert coords == [ (11.266026, 47.114958, 'Parkplatz', 'Erster Parkplatz'), (11.266262, 47.114715, 'Gasthaus', '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('