df3eb01a3cf3499b3cbb5e72ad5055bd1b26c748
[philipp/winterrodeln/wrpylib.git] / tests / test_mwmarkup.py
1 #!/usr/bin/python2.7
2 # -*- coding: iso-8859-15 -*-
3 import wrpylib.mwmarkup
4
5
6 def test_find_template():
7     wikitext = u'''== Allgemeines ==
8     {{Rodelbahnbox
9     | Position             = 47.309820 N 9.986508 E
10     | Position oben        = 
11     | Höhe oben            = 1244
12     | Position unten       = 
13     | Höhe unten           = 806
14     | Länge                = 5045
15     | Schwierigkeit        = 
16     | Lawinen              = gelegentlich
17     | Betreiber            = 
18     | Öffentliche Anreise  = Ja
19     | Gehzeit              = 105
20     | Aufstieg getrennt    = Nein
21     | Aufstiegshilfe       = Nein
22     | Beleuchtungsanlage   = Nein
23     | Beleuchtungstage     = 
24     | Rodelverleih         = Ja
25     | Gütesiegel           = 
26     | Webauskunft          = 
27     | Telefonauskunft      = +43-664-1808482 (Bergkristallhütte)
28     | Bild                 = Rodelbahn Bergkristallhütte 2009-03-03.jpg
29     | In Übersichtskarte   = Ja
30     | Forumid              = 72
31     }}
32     Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
33     start, end = wrpylib.mwmarkup.find_template(wikitext, u'Rodelbahnbox')
34     assert start == wikitext.find(u'{{')
35     assert end == wikitext.find(u'}}')+2
36
37
38 def test_split_template():
39     wikitext = u'''== Allgemeines ==
40     {{Rodelbahnbox
41     | Position             = 47.309820 N 9.986508 E
42     | Position oben        = 
43     | Höhe oben            = 1244
44     | Position unten       = 
45     | Höhe unten           = 806
46     | Länge                = 5045
47     | Schwierigkeit        = 
48     | Lawinen              = gelegentlich
49     | Betreiber            = 
50     | Öffentliche Anreise  = Ja
51     | Gehzeit              = 105
52     | Aufstieg getrennt    = Nein
53     | Aufstiegshilfe       = Nein
54     | Beleuchtungsanlage   = Nein
55     | Beleuchtungstage     = 
56     | Rodelverleih         = Ja
57     | Gütesiegel           = 
58     | Webauskunft          = 
59     | Telefonauskunft      = +43-664-1808482 (Bergkristallhütte)
60     | Bild                 = Rodelbahn Bergkristallhütte 2009-03-03.jpg
61     | In Übersichtskarte   = Ja
62     | Forumid              = 72
63     }}
64     Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
65     start, end = wrpylib.mwmarkup.find_template(wikitext, u'Rodelbahnbox')
66     template_title, parameters = wrpylib.mwmarkup.split_template(wikitext[start:end])
67     assert template_title == u'Rodelbahnbox'
68     assert len(parameters) == 22
69     assert parameters['Position'] == u'47.309820 N 9.986508 E'
70     assert parameters['Telefonauskunft'] == u'+43-664-1808482 (Bergkristallhütte)'
71     assert parameters['Schwierigkeit'] == u''
72
73
74 def test_create_template():
75     wikitext = u'''{{Nicetemplate|Red|Bold|Position=Top|Alignment=Right}}'''
76     template_title, parameters = wrpylib.mwmarkup.split_template(wikitext)
77     print parameters
78     keys = [u'1', u'2', u'Position', u'Alignment']
79     values = [parameters[k] for k in keys]
80     wikitext_generated = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:])
81     wikitext_table = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:], True)
82     assert wikitext_generated == wikitext
83
84
85 def test_parse_googlemap():
86     wikitext = u'''
87     <googlemap version="0.9" lat="47.113291" lon="11.272337" zoom="15">
88     (Parkplatz)47.114958,11.266026
89     Erster Parkplatz
90     
91     (Gasthaus) 47.114715, 11.266262, Alt Bärnbad (Gasthaus)
92     6#FF014E9A
93     47.114715,11.266262
94     47.114135,11.268381
95     47.113421,11.269322
96     47.11277,11.269979
97     47.112408,11.271119
98     </googlemap>
99     '''
100     center, zoom, coords, paths = wrpylib.mwmarkup.parse_googlemap(wikitext)
101     assert center == (11.272337, 47.113291)
102     assert zoom == 15
103     assert coords == [
104         (11.266026, 47.114958, 'Parkplatz', 'Erster Parkplatz'),
105         (11.266262, 47.114715, 'Gasthaus', u'Alt Bärnbad (Gasthaus)')]
106     assert paths == [
107         ('6#FF014E9A', [
108             (11.266262, 47.114715, None, None),
109             (11.268381, 47.114135, None, None),
110             (11.269322, 47.113421, None, None),
111             (11.269979, 47.11277, None, None),
112             (11.271119, 47.112408, None, None)])]
113     center, zoom, coords, paths, start, end = wrpylib.mwmarkup.parse_googlemap(wikitext, detail=True)
114     assert start == 5
115     assert end == 344
116     result = wrpylib.mwmarkup.parse_googlemap(wikitext.replace('<googlemap', '|googlemap'), detail=True)
117     assert result is None
118