Created new function find_tag to find XML like tags.
[philipp/winterrodeln/wrpylib.git] / tests / test_wrmwmarkup.py
index 03f0ce870bdb8bf69595aba8b9c049f0c3f891fe..c38c823ee8a63e86f362532526171da190c82694 100644 (file)
@@ -1,9 +1,12 @@
-#!/usr/bin/python2.6
+#!/usr/bin/python2.7
 # -*- coding: iso-8859-15 -*-
+import wrpylib.wrmwmarkup
 import wrpylib.mwmarkup
+import formencode
+import textwrap
 
 
-def test_find_template():
+def test_rodelbahnbox_to_sledrun():
     wikitext = u'''== Allgemeines ==
     {{Rodelbahnbox
     | Position             = 47.309820 N 9.986508 E
@@ -30,54 +33,155 @@ def test_find_template():
     | 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
+    start, end, sledrun = wrpylib.wrmwmarkup.rodelbahnbox_to_sledrun(wikitext)
+    wrpylib.wrmwmarkup.sledrun_to_rodelbahnbox(sledrun, '1.3')
 
 
-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
+
+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]]
     }}
-    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
+    Die Bergkristallhütte ist Teil des Boden-Vorsäß.'''
+    start, end, inn = wrpylib.wrmwmarkup.gasthausbox_to_inn(wikitext)
+    wrpylib.wrmwmarkup.inn_to_gasthausbox(inn)
+
+
+def test_googlemap_to_wrmap():
+    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)
+    json = wrpylib.wrmwmarkup.googlemap_to_wrmap(center, zoom, coords, paths)
+    assert json['properties']['lon'] == 11.272337
+    assert json['properties']['lat'] == 47.113291
+    assert json['properties']['zoom'] == 15
+    assert json['features'][0]['properties']['type'] == 'parkplatz'
+    assert json['features'][0]['properties']['name'] == 'Erster Parkplatz'
+    assert json['features'][0]['geometry']['coordinates'] == [11.266026, 47.114958]
+    assert json['features'][1]['properties']['type'] == 'gasthaus'
+    assert json['features'][1]['properties']['name'] == u'Alt Bärnbad (Gasthaus)'
+    assert json['features'][1]['geometry']['coordinates'] == [11.266262, 47.114715]
+    assert json['features'][2]['properties']['type'] == 'rodelbahn'
+    assert json['features'][2]['geometry']['coordinates'] == [
+        [11.266262, 47.114715],
+        [11.268381, 47.114135],
+        [11.269322, 47.113421],
+        [11.269979, 47.11277],
+        [11.271119, 47.112408]]
+
+
+def test_parse_wrmap():
+    wikitext = u'''
+    <wrmap lat="47.2417134" lon="11.21408895" zoom="14" width="700" height="400">
+    <gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 11.190454</gasthaus>
+    <parkplatz>47.245789 11.238971</parkplatz>
+    <haltestelle name="Oberperfuss Rangger Köpfl Lift">47.245711 11.238283</haltestelle>
+    <rodelbahn>
+        47.238587 11.203360
+        47.244951 11.230868
+        47.245470 11.237853
+    </rodelbahn>
+    </wrmap>
+    '''
+    json = wrpylib.wrmwmarkup.parse_wrmap(wikitext)
+    assert json['properties']['lon'] == 11.21408895
+    assert json['properties']['lat'] == 47.2417134
+    assert json['properties']['zoom'] == 14
+    assert json['properties']['width'] == 700
+    assert json['properties']['height'] == 400
+    assert json['features'][0]['properties']['type'] == 'gasthaus'
+    assert json['features'][0]['properties']['name'] == u'Rosskogelhütte'
+    assert json['features'][0]['properties']['wiki'] == u'Rosskogelhütte'
+    assert json['features'][0]['geometry']['coordinates'] == [11.190454, 47.240689]
+    assert json['features'][1]['properties']['type'] == 'parkplatz'
+    assert json['features'][1]['geometry']['coordinates'] == [11.238971, 47.245789]
+    assert json['features'][2]['properties']['type'] == 'haltestelle'
+    assert json['features'][2]['properties']['name'] == u'Oberperfuss Rangger Köpfl Lift'
+    assert json['features'][2]['geometry']['coordinates'] == [11.238283, 47.245711]
+    assert json['features'][3]['properties']['type'] == 'rodelbahn'
+    assert json['features'][3]['geometry']['coordinates'] == [
+        [11.203360, 47.238587],
+        [11.230868, 47.244951],
+        [11.237853, 47.245470]]
+
+
+def test_create_wrmap():
+    geojson = {
+        'type': 'FeatureCollection',
+        'features':
+            [{
+                'type': 'Feature',
+                'geometry': {
+                    'type': 'Point',
+                    'coordinates': [11.190454, 47.240689]},
+                'properties': {'type': 'gasthaus', 'name': u'Rosskogelhütte', 'wiki': u'Rosskogelhütte'}
+            }, {
+                'type': 'Feature',
+                'geometry': {
+                    'type': 'Point',
+                    'coordinates': [11.238971, 47.245789]},
+                'properties': {'type': 'parkplatz'}
+            }, {
+                'type': 'Feature',
+                'geometry': {
+                    'type': 'Point',
+                    'coordinates': [11.238283, 47.245711]},
+                'properties': {'type': 'haltestelle', 'name': u'Oberperfuss Rangger Köpfl Lift'}
+            }, {
+                'type': 'Feature',
+                'geometry': {
+                    'type': 'LineString',
+                    'coordinates': [
+                        [11.203360, 47.238587],
+                        [11.230868, 47.244951],
+                        [11.237853, 47.245470]]},
+                'properties': {'type': 'rodelbahn'}
+            }],
+        'properties': {
+            'lon': 11.21408895,
+            'lat': 47.2417134,
+            'zoom': 14,
+            'width': 700,
+            'height': 400}
+    }
+
+    wikitext = wrpylib.wrmwmarkup.create_wrmap(geojson)
+    assert wikitext == textwrap.dedent(u'''\
+    <wrmap height="400" lat="47.2417134" lon="11.21408895" width="700" zoom="14">
+
+    <gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 N 11.190454 E</gasthaus>
+    <parkplatz>47.245789 N 11.238971 E</parkplatz>
+    <haltestelle name="Oberperfuss Rangger Köpfl Lift">47.245711 N 11.238283 E</haltestelle>
+
+    <rodelbahn>
+    47.238587 N 11.203360 E
+    47.244951 N 11.230868 E
+    47.245470 N 11.237853 E
+    </rodelbahn>
+
+    </wrmap>''')