Added test case for new function find_tag.
[philipp/winterrodeln/wrpylib.git] / tests / test_mwmarkup.py
index 15dff3181fb394c086265f729da57b707a2e398d..3d8c2cbbc5bc156163abaf45290dfcc4557158b0 100644 (file)
@@ -1,10 +1,9 @@
-#!/usr/bin/python2.6
+#!/usr/bin/python2.7
 # -*- coding: iso-8859-15 -*-
-import wrpylib.wrmwmarkup
-import formencode
+import wrpylib.mwmarkup
 
 
-def test_rodelbahnbox_to_sledrun():
+def test_find_template():
     wikitext = u'''== Allgemeines ==
     {{Rodelbahnbox
     | Position             = 47.309820 N 9.986508 E
@@ -31,32 +30,102 @@ def test_rodelbahnbox_to_sledrun():
     | Forumid              = 72
     }}
     Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
-    class Sledrun(object): pass
-    sledrun = Sledrun()
-    wrpylib.wrmwmarkup.rodelbahnbox_to_sledrun(wikitext, sledrun)
-    wrpylib.wrmwmarkup.sledrun_to_rodelbahnbox(sledrun, '1.3')
-
-
-
-def test_gasthausbox_to_inn():
-    wikitext = u'''{{Gasthausbox
-    | Position          = 47.295549 N 9.986970 E
-    | Höhe              = 1250
-    | Betreiber         = 
-    | Sitzplätze        = 
-    | Übernachtung      = 
-    | Rauchfrei         = Nein
-    | Rodelverleih      = 
-    | Handyempfang      = A1; T-Mobile/Telering
-    | Homepage          = http://www.bergkristallhuette.com/
-    | E-Mail            = bergkristallhuette@gmx.at
-    | Telefon           = +43-664-1808482
-    | Bild              = Bergkritsallhütte 2009-02-07.JPG
-    | Rodelbahnen       = [[Bergkristallhütte]]
+    start, end = wrpylib.mwmarkup.find_template(wikitext, u'Rodelbahnbox')
+    assert start == wikitext.find(u'{{')
+    assert end == wikitext.find(u'}}')+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 Bergkristallhütte ist Teil des Boden-Vorsäß.'''
-    class Inn(object): pass
-    inn = Inn()
-    wrpylib.wrmwmarkup.gasthausbox_to_inn(wikitext, inn)
-    wrpylib.wrmwmarkup.inn_to_gasthausbox(inn)
+    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_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
+
+
+def test_find_tag():
+    wikitext = u'This is <tag>my first tag</tag> and <tag>my second tag</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 <tag myattrib="4"/>.'
+    start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tag')
+    assert (start, content, endtag, end) == (8, None, None, 27)
+
+
+def test_parse_googlemap():
+    wikitext = u'''
+    <googlemap version="0.9" lat="47.113291" lon="11.272337" zoom="15">
+    (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
+    </googlemap>
+    '''
+    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)])]
+    center, zoom, coords, paths, start, end = wrpylib.mwmarkup.parse_googlemap(wikitext, detail=True)
+    assert start == 5
+    assert end == 344
+    result = wrpylib.mwmarkup.parse_googlemap(wikitext.replace('<googlemap', '|googlemap'), detail=True)
+    assert result is None