2ac1d948583c36baadcc6ef4856e62424fdfb2ce
[philipp/winterrodeln/wrpylib.git] / tests / test_wrmwmarkup.py
1 #!/usr/bin/python2.7
2 # -*- coding: iso-8859-15 -*-
3 import wrpylib.wrmwmarkup
4 import formencode
5 import textwrap
6
7
8 def test_rodelbahnbox_to_sledrun():
9     wikitext = u'''== Allgemeines ==
10     {{Rodelbahnbox
11     | Position             = 47.309820 N 9.986508 E
12     | Position oben        = 
13     | Höhe oben            = 1244
14     | Position unten       = 
15     | Höhe unten           = 806
16     | Länge                = 5045
17     | Schwierigkeit        = 
18     | Lawinen              = gelegentlich
19     | Betreiber            = 
20     | Öffentliche Anreise  = Ja
21     | Gehzeit              = 105
22     | Aufstieg getrennt    = Nein
23     | Aufstiegshilfe       = Nein
24     | Beleuchtungsanlage   = Nein
25     | Beleuchtungstage     = 
26     | Rodelverleih         = Ja
27     | Gütesiegel           = 
28     | Webauskunft          = 
29     | Telefonauskunft      = +43-664-1808482 (Bergkristallhütte)
30     | Bild                 = Rodelbahn Bergkristallhütte 2009-03-03.jpg
31     | In Übersichtskarte   = Ja
32     | Forumid              = 72
33     }}
34     Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
35     start, end, sledrun = wrpylib.wrmwmarkup.rodelbahnbox_to_sledrun(wikitext)
36     wrpylib.wrmwmarkup.sledrun_to_rodelbahnbox(sledrun, '1.3')
37
38
39
40 def test_gasthausbox_to_inn():
41     wikitext = u'''{{Gasthausbox
42     | Position          = 47.295549 N 9.986970 E
43     | Höhe              = 1250
44     | Betreiber         = 
45     | Sitzplätze        = 
46     | Übernachtung      = 
47     | Rauchfrei         = Nein
48     | Rodelverleih      = 
49     | Handyempfang      = A1; T-Mobile/Telering
50     | Homepage          = http://www.bergkristallhuette.com/
51     | E-Mail            = bergkristallhuette@gmx.at
52     | Telefon           = +43-664-1808482
53     | Bild              = Bergkritsallhütte 2009-02-07.JPG
54     | Rodelbahnen       = [[Bergkristallhütte]]
55     }}
56     Die Bergkristallhütte ist Teil des Boden-Vorsäß.'''
57     start, end, inn = wrpylib.wrmwmarkup.gasthausbox_to_inn(wikitext)
58     wrpylib.wrmwmarkup.inn_to_gasthausbox(inn)
59
60
61 def test_parse_googlemap():
62     wikitext = u'''
63     <googlemap version="0.9" lat="47.113291" lon="11.272337" zoom="15">
64     (Parkplatz)47.114958,11.266026
65     Erster Parkplatz
66     
67     (Gasthaus) 47.114715, 11.266262, Alt Bärnbad (Gasthaus)
68     6#FF014E9A
69     47.114715,11.266262
70     47.114135,11.268381
71     47.113421,11.269322
72     47.11277,11.269979
73     47.112408,11.271119
74     </googlemap>
75     '''
76     json = wrpylib.wrmwmarkup.parse_googlemap(wikitext)
77     assert json['properties']['lon'] == 11.272337
78     assert json['properties']['lat'] == 47.113291
79     assert json['properties']['zoom'] == 15
80     assert json['features'][0]['properties']['type'] == 'parkplatz'
81     assert json['features'][0]['properties']['name'] == 'Erster Parkplatz'
82     assert json['features'][0]['geometry']['coordinates'] == [11.266026, 47.114958]
83     assert json['features'][1]['properties']['type'] == 'gasthaus'
84     assert json['features'][1]['properties']['name'] == u'Alt Bärnbad (Gasthaus)'
85     assert json['features'][1]['geometry']['coordinates'] == [11.266262, 47.114715]
86     assert json['features'][2]['properties']['type'] == 'rodelbahn'
87     assert json['features'][2]['geometry']['coordinates'] == [
88         [11.266262, 47.114715],
89         [11.268381, 47.114135],
90         [11.269322, 47.113421],
91         [11.269979, 47.11277],
92         [11.271119, 47.112408]]
93
94
95 def test_parse_wrmap():
96     wikitext = u'''
97     <wrmap lat="47.2417134" lon="11.21408895" zoom="14" width="700" height="400">
98     <gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 11.190454</gasthaus>
99     <parkplatz>47.245789 11.238971</parkplatz>
100     <haltestelle name="Oberperfuss Rangger Köpfl Lift">47.245711 11.238283</haltestelle>
101     <rodelbahn>
102         47.238587 11.203360
103         47.244951 11.230868
104         47.245470 11.237853
105     </rodelbahn>
106     </wrmap>
107     '''
108     json = wrpylib.wrmwmarkup.parse_wrmap(wikitext)
109     assert json['properties']['lon'] == 11.21408895
110     assert json['properties']['lat'] == 47.2417134
111     assert json['properties']['zoom'] == 14
112     assert json['properties']['width'] == 700
113     assert json['properties']['height'] == 400
114     assert json['features'][0]['properties']['type'] == 'gasthaus'
115     assert json['features'][0]['properties']['name'] == u'Rosskogelhütte'
116     assert json['features'][0]['properties']['wiki'] == u'Rosskogelhütte'
117     assert json['features'][0]['geometry']['coordinates'] == [11.190454, 47.240689]
118     assert json['features'][1]['properties']['type'] == 'parkplatz'
119     assert json['features'][1]['geometry']['coordinates'] == [11.238971, 47.245789]
120     assert json['features'][2]['properties']['type'] == 'haltestelle'
121     assert json['features'][2]['properties']['name'] == u'Oberperfuss Rangger Köpfl Lift'
122     assert json['features'][2]['geometry']['coordinates'] == [11.238283, 47.245711]
123     assert json['features'][3]['properties']['type'] == 'rodelbahn'
124     assert json['features'][3]['geometry']['coordinates'] == [
125         [11.203360, 47.238587],
126         [11.230868, 47.244951],
127         [11.237853, 47.245470]]
128
129
130 def test_create_wrmap():
131     geojson = {
132         'type': 'FeatureCollection',
133         'features':
134             [{
135                 'type': 'Feature',
136                 'geometry': {
137                     'type': 'Point',
138                     'coordinates': [11.190454, 47.240689]},
139                 'properties': {'type': 'inn', 'name': u'Rosskogelhütte', 'wiki': u'Rosskogelhütte'}
140             }, {
141                 'type': 'Feature',
142                 'geometry': {
143                     'type': 'Point',
144                     'coordinates': [11.238971, 47.245789]},
145                 'properties': {'type': 'carpark'}
146             }, {
147                 'type': 'Feature',
148                 'geometry': {
149                     'type': 'Point',
150                     'coordinates': [11.238283, 47.245711]},
151                 'properties': {'type': 'busstop', 'name': u'Oberperfuss Rangger Köpfl Lift'}
152             }, {
153                 'type': 'Feature',
154                 'geometry': {
155                     'type': 'LineString',
156                     'coordinates': [
157                         [11.203360, 47.238587],
158                         [11.230868, 47.244951],
159                         [11.237853, 47.245470]]},
160                 'properties': {'type': 'sledrun'}
161             }],
162         'properties': {
163             'lon': 11.21408895,
164             'lat': 47.2417134,
165             'zoom': 14,
166             'width': 700,
167             'height': 400}
168     }
169
170     wikitext = wrpylib.wrmwmarkup.create_wrmap(geojson)
171     assert wikitext == textwrap.dedent(u'''\
172     <wrmap lat="47.2417134" lon="11.21408895" zoom="14" width="700" height="400">
173     <gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 11.190454</gasthaus>
174     <parkplatz>47.245789 11.238971</parkplatz>
175     <haltestelle name="Oberperfuss Rangger Köpfl Lift">47.245711 11.238283</haltestelle>
176     <rodelbahn>
177         47.238587 11.203360
178         47.244951 11.230868
179         47.245470 11.237853
180     </rodelbahn>
181     </wrmap>''')
182