Made test_wrregioncache_table independent of wrregioncache.id.
[philipp/winterrodeln/wrpylib.git] / tests / test_wrmwmarkup.py
index d6d1eef580e445965b70e21202408cc41522bb99..9d1a74874395f5d5d88c3d935842c34403d65495 100644 (file)
@@ -141,15 +141,15 @@ class TestInn(unittest.TestCase):
         gasthausbox['Höhe'] = 2145
         gasthausbox['Betreiber'] = 'Max Mustermann'
         gasthausbox['Sitzplätze'] = 30
-        gasthausbox['Übernachtung'] = (False, None)
+        gasthausbox['Übernachtung'] = (True, '2 Zimmer')
         gasthausbox['Rauchfrei'] = 0.5
         gasthausbox['Rodelverleih'] = (True, '6 Euro')
-        gasthausbox['Handyempfang'] = []
+        gasthausbox['Handyempfang'] = [('A1', None), ('Drei', 'schlecht')]
         gasthausbox['Homepage'] = (True, 'http://www.graf-ferdinand.at/')
-        gasthausbox['E-Mail'] = [(('max.mustermann@graf-ferdinand.at', False), None)]
+        gasthausbox['E-Mail'] = [(('max.mustermann@graf-ferdinand.at', False), None), (('ich@example.com', True), 'privat')]
         gasthausbox['Telefon'] = [('+43-5039-21666', None), ('+43-686-4134880', 'Sommer')]
         gasthausbox['Bild'] = 'Gasthaus_Graf_Ferdinand_Haus_01.jpg'
-        gasthausbox['Rodelbahnen'] = ['[[Finstertaler Speicher]]']
+        gasthausbox['Rodelbahnen'] = ['[[Finstertaler Speicher]]', '[[Birgitzer Alm]]']
         inn = Inn()
         inn_from_gasthausbox(gasthausbox, inn)
         self.assertEqual(inn.position_latitude, 9.876000)
@@ -157,19 +157,18 @@ class TestInn(unittest.TestCase):
         self.assertEqual(inn.position_elevation, 2145)
         self.assertEqual(inn.operator, 'Max Mustermann')
         self.assertEqual(inn.seats, 30)
-        self.assertEqual(inn.overnight, False)
-        self.assertEqual(inn.overnight_comment, None)
+        self.assertEqual(inn.overnight, True)
+        self.assertEqual(inn.overnight_comment, '2 Zimmer')
         self.assertEqual(inn.smoker_area, True)
         self.assertEqual(inn.nonsmoker_area, True)
         self.assertEqual(inn.sled_rental, True)
         self.assertEqual(inn.sled_rental_comment, '6 Euro')
-        self.assertEqual(inn.mobile_provider, 'Nein')
+        self.assertEqual(inn.mobile_provider, 'A1; Drei (schlecht)')
         self.assertEqual(inn.homepage, 'http://www.graf-ferdinand.at/')
-        self.assertEqual(inn.email_list, 'max.mustermann@graf-ferdinand.at')
+        self.assertEqual(inn.email_list, 'max.mustermann@graf-ferdinand.at; ich(at)example.com (privat)')
         self.assertEqual(inn.phone_list, '+43-5039-21666; +43-686-4134880 (Sommer)')
         self.assertEqual(inn.image, 'Gasthaus_Graf_Ferdinand_Haus_01.jpg')
-        self.assertEqual(inn.sledding_list, '[[Finstertaler Speicher]]')
-
+        self.assertEqual(inn.sledding_list, '[[Finstertaler Speicher]]; [[Birgitzer Alm]]')
 
     def test_inn_to_gasthausbox(self):
         class Inn:
@@ -180,32 +179,178 @@ class TestInn(unittest.TestCase):
         inn.position_elevation = 2145
         inn.operator = 'Max Mustermann'
         inn.seats = 30
-        inn.overnight = False
-        inn.overnight_comment = None
+        inn.overnight = True
+        inn.overnight_comment = '2 Zimmer'
         inn.smoker_area = True
         inn.nonsmoker_area = True
         inn.sled_rental = True
         inn.sled_rental_comment = '6 Euro'
-        inn.mobile_provider = 'Nein'
+        inn.mobile_provider = 'A1; Drei (schlecht)'
         inn.homepage = 'http://www.graf-ferdinand.at/'
-        inn.email_list = 'max.mustermann@graf-ferdinand.at'
+        inn.email_list = 'max.mustermann@graf-ferdinand.at; ich(at)example.com (privat)'
         inn.phone_list = '+43-5039-21666; +43-686-4134880 (Sommer)'
         inn.image = 'Gasthaus_Graf_Ferdinand_Haus_01.jpg'
-        inn.sledding_list = '[[Finstertaler Speicher]]'
+        inn.sledding_list = '[[Finstertaler Speicher]]; [[Birgitzer Alm]]'
         gasthausbox = inn_to_gasthausbox(inn)
         self.assertEqual(gasthausbox['Position'], LonLat(11.015883, 9.876000))
         self.assertEqual(gasthausbox['Höhe'], 2145)
         self.assertEqual(gasthausbox['Betreiber'], 'Max Mustermann')
         self.assertEqual(gasthausbox['Sitzplätze'], 30)
-        self.assertEqual(gasthausbox['Übernachtung'], (False, None))
+        self.assertEqual(gasthausbox['Übernachtung'], (True, '2 Zimmer'))
         self.assertEqual(gasthausbox['Rauchfrei'], 0.5)
         self.assertEqual(gasthausbox['Rodelverleih'], (True, '6 Euro'))
-        self.assertEqual(gasthausbox['Handyempfang'], [])
+        self.assertEqual(gasthausbox['Handyempfang'], [('A1', None), ('Drei', 'schlecht')])
         self.assertEqual(gasthausbox['Homepage'], (True, 'http://www.graf-ferdinand.at/'))
-        self.assertEqual(gasthausbox['E-Mail'], [(('max.mustermann@graf-ferdinand.at', False), None)])
+        self.assertEqual(gasthausbox['E-Mail'], [(('max.mustermann@graf-ferdinand.at', False), None), (('ich@example.com', True), 'privat')])
         self.assertEqual(gasthausbox['Telefon'], [('+43-5039-21666', None), ('+43-686-4134880', 'Sommer')])
         self.assertEqual(gasthausbox['Bild'], 'Gasthaus_Graf_Ferdinand_Haus_01.jpg')
-        self.assertEqual(gasthausbox['Rodelbahnen'], ['[[Finstertaler Speicher]]'])
+        self.assertEqual(gasthausbox['Rodelbahnen'], ['[[Finstertaler Speicher]]', '[[Birgitzer Alm]]'])
+
+    def test_inn_from_gasthausbox_no(self):
+        class Inn:
+            pass
+        gasthausbox = collections.OrderedDict()
+        gasthausbox['Position'] = LonLat(None, None)
+        gasthausbox['Höhe'] = None
+        gasthausbox['Betreiber'] = None
+        gasthausbox['Sitzplätze'] = None
+        gasthausbox['Übernachtung'] = (False, None)
+        gasthausbox['Rauchfrei'] = 0.0
+        gasthausbox['Rodelverleih'] = (False, None)
+        gasthausbox['Handyempfang'] = []
+        gasthausbox['Homepage'] = (False, None)
+        gasthausbox['E-Mail'] = []
+        gasthausbox['Telefon'] = []
+        gasthausbox['Bild'] = None
+        gasthausbox['Rodelbahnen'] = []
+        inn = Inn()
+        inn_from_gasthausbox(gasthausbox, inn)
+        self.assertEqual(inn.position_latitude, None)
+        self.assertEqual(inn.position_longitude, None)
+        self.assertEqual(inn.position_elevation, None)
+        self.assertEqual(inn.operator, None)
+        self.assertEqual(inn.seats, None)
+        self.assertEqual(inn.overnight, False)
+        self.assertEqual(inn.overnight_comment, None)
+        self.assertEqual(inn.smoker_area, True)
+        self.assertEqual(inn.nonsmoker_area, False)
+        self.assertEqual(inn.sled_rental, False)
+        self.assertEqual(inn.sled_rental_comment, None)
+        self.assertEqual(inn.mobile_provider, 'Nein')
+        self.assertEqual(inn.homepage, 'Nein')
+        self.assertEqual(inn.email_list, 'Nein')
+        self.assertEqual(inn.phone_list, 'Nein')
+        self.assertEqual(inn.image, None)
+        self.assertEqual(inn.sledding_list, 'Nein')
+
+    def test_inn_to_gasthausbox_no(self):
+        class Inn:
+            pass
+        inn = Inn()
+        inn.position_latitude = None
+        inn.position_longitude = None
+        inn.position_elevation = None
+        inn.operator = None
+        inn.seats = None
+        inn.overnight = False
+        inn.overnight_comment = None
+        inn.smoker_area = True
+        inn.nonsmoker_area = False
+        inn.sled_rental = False
+        inn.sled_rental_comment = None
+        inn.mobile_provider = 'Nein'
+        inn.homepage = 'Nein'
+        inn.email_list = 'Nein'
+        inn.phone_list = 'Nein'
+        inn.image = None
+        inn.sledding_list = 'Nein'
+        gasthausbox = inn_to_gasthausbox(inn)
+        self.assertEqual(gasthausbox['Position'], LonLat(None, None))
+        self.assertEqual(gasthausbox['Höhe'], None)
+        self.assertEqual(gasthausbox['Betreiber'], None)
+        self.assertEqual(gasthausbox['Sitzplätze'], None)
+        self.assertEqual(gasthausbox['Übernachtung'], (False, None))
+        self.assertEqual(gasthausbox['Rauchfrei'], 0.0)
+        self.assertEqual(gasthausbox['Rodelverleih'], (False, None))
+        self.assertEqual(gasthausbox['Handyempfang'], [])
+        self.assertEqual(gasthausbox['Homepage'], (False, None))
+        self.assertEqual(gasthausbox['E-Mail'], [])
+        self.assertEqual(gasthausbox['Telefon'], [])
+        self.assertEqual(gasthausbox['Bild'], None)
+        self.assertEqual(gasthausbox['Rodelbahnen'], [])
+
+    def test_inn_from_gasthausbox_none(self):
+        class Inn:
+            pass
+        gasthausbox = collections.OrderedDict()
+        gasthausbox['Position'] = LonLat(None, None)
+        gasthausbox['Höhe'] = None
+        gasthausbox['Betreiber'] = None
+        gasthausbox['Sitzplätze'] = None
+        gasthausbox['Übernachtung'] = (None, None)
+        gasthausbox['Rauchfrei'] = None
+        gasthausbox['Rodelverleih'] = (None, None)
+        gasthausbox['Handyempfang'] = None
+        gasthausbox['Homepage'] = (None, None)
+        gasthausbox['E-Mail'] = None
+        gasthausbox['Telefon'] = None
+        gasthausbox['Bild'] = None
+        gasthausbox['Rodelbahnen'] = None
+        inn = Inn()
+        inn_from_gasthausbox(gasthausbox, inn)
+        self.assertEqual(inn.position_latitude, None)
+        self.assertEqual(inn.position_longitude, None)
+        self.assertEqual(inn.position_elevation, None)
+        self.assertEqual(inn.operator, None)
+        self.assertEqual(inn.seats, None)
+        self.assertEqual(inn.overnight, None)
+        self.assertEqual(inn.overnight_comment, None)
+        self.assertEqual(inn.smoker_area, None)
+        self.assertEqual(inn.nonsmoker_area, None)
+        self.assertEqual(inn.sled_rental, None)
+        self.assertEqual(inn.sled_rental_comment, None)
+        self.assertEqual(inn.mobile_provider, None)
+        self.assertEqual(inn.homepage, None)
+        self.assertEqual(inn.email_list, None)
+        self.assertEqual(inn.phone_list, None)
+        self.assertEqual(inn.image, None)
+        self.assertEqual(inn.sledding_list, None)
+
+    def test_inn_to_gasthausbox_none(self):
+        class Inn:
+            pass
+        inn = Inn()
+        inn.position_latitude = None
+        inn.position_longitude = None
+        inn.position_elevation = None
+        inn.operator = None
+        inn.seats = None
+        inn.overnight = None
+        inn.overnight_comment = None
+        inn.smoker_area = None
+        inn.nonsmoker_area = None
+        inn.sled_rental = None
+        inn.sled_rental_comment = None
+        inn.mobile_provider = None
+        inn.homepage = None
+        inn.email_list = None
+        inn.phone_list = None
+        inn.image = None
+        inn.sledding_list = None
+        gasthausbox = inn_to_gasthausbox(inn)
+        self.assertEqual(gasthausbox['Position'], LonLat(None, None))
+        self.assertEqual(gasthausbox['Höhe'], None)
+        self.assertEqual(gasthausbox['Betreiber'], None)
+        self.assertEqual(gasthausbox['Sitzplätze'], None)
+        self.assertEqual(gasthausbox['Übernachtung'], (None, None))
+        self.assertEqual(gasthausbox['Rauchfrei'], None)
+        self.assertEqual(gasthausbox['Rodelverleih'], (None, None))
+        self.assertEqual(gasthausbox['Handyempfang'], None)
+        self.assertEqual(gasthausbox['Homepage'], (None, None))
+        self.assertEqual(gasthausbox['E-Mail'], None)
+        self.assertEqual(gasthausbox['Telefon'], None)
+        self.assertEqual(gasthausbox['Bild'], None)
+        self.assertEqual(gasthausbox['Rodelbahnen'], None)
 
 
 class TestLonlatEle(unittest.TestCase):
@@ -220,211 +365,7 @@ class TestLonlatEle(unittest.TestCase):
         self.assertEqual('{{Position oben|46.942239 N 11.468819 E|1866}}', template)
 
 
-class TestWrMwMarkup(unittest.TestCase):
-    def test_rodelbahnbox_to_sledrun(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 möglich     = Nein
-        | 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, sledrun = wrpylib.wrmwmarkup.rodelbahnbox_to_sledrun(wikitext)
-        wrpylib.wrmwmarkup.sledrun_to_rodelbahnbox(sledrun)
-
-
-    def test_RodelbahnboxDictConverter(self):
-        v = wrpylib.wrmwmarkup.RodelbahnboxDictConverter()
-
-        sledrun = v.to_python(other)
-        assert sledrun.forum_id == 72
-        other2 = v.from_python(sledrun)
-        assert other == other2
-
-
-    def test_RodelbahnboxValidator(self):
-        v = wrpylib.wrmwmarkup.RodelbahnboxValidator()
-        wikitext = textwrap.dedent('''\
-        {{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
-        | Aufstieg möglich     = Nein
-        | Aufstieg getrennt    = Nein
-        | Gehzeit              = 105
-        | 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
-        }}''')
-        sledrun = v.to_python(wikitext)
-        wikitext2 = v.from_python(sledrun)
-        assert wikitext == wikitext2
-        wikitext = textwrap.dedent('''\
-        {{Rodelbahnbox
-        | Position             =
-        | Position oben        =
-        | Höhe oben            =
-        | Position unten       =
-        | Höhe unten           =
-        | Länge                =
-        | Schwierigkeit        =
-        | Lawinen              =
-        | Betreiber            =
-        | Öffentliche Anreise  =
-        | Aufstieg möglich     =
-        | Aufstieg getrennt    =
-        | Gehzeit              =
-        | Aufstiegshilfe       =
-        | Beleuchtungsanlage   =
-        | Beleuchtungstage     =
-        | Rodelverleih         =
-        | Gütesiegel           =
-        | Webauskunft          =
-        | Telefonauskunft      =
-        | Bild                 =
-        | In Übersichtskarte   =
-        | Forumid              =
-        }}''')
-        sledrun = v.to_python(wikitext)
-        wikitext2 = v.from_python(sledrun)
-        assert wikitext == wikitext2
-
-
-    def test_gasthausbox_to_inn(self):
-        wikitext = '''{{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 Bergkristallhütte ist Teil des Boden-Vorsäß.'''
-        start, end, inn = wrpylib.wrmwmarkup.gasthausbox_to_inn(wikitext)
-        wrpylib.wrmwmarkup.inn_to_gasthausbox(inn)
-
-
-    def test_GasthausboxDictConverter(self):
-        v = wrpylib.wrmwmarkup.GasthausboxDictConverter()
-        other = collections.OrderedDict([
-        ('Position', (47.295549, 9.986970)),
-        ('Höhe', 1250),
-        ('Betreiber', None),
-        ('Sitzplätze', None),
-        ('Übernachtung', (None, None)),
-        ('Rauchfrei', (True, False)),
-        ('Rodelverleih', (None, None)),
-        ('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]]')])
-        inn = v.to_python(other)
-        assert inn.homepage == 'http://www.bergkristallhuette.com/'
-        other2 = v.from_python(inn)
-        assert other == other2
-
-
-    def test_GasthausboxValidator(self):
-        v = wrpylib.wrmwmarkup.GasthausboxValidator()
-        wikitext = textwrap.dedent('''\
-        {{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]]
-        }}''')
-        inn = v.to_python(wikitext)
-        wikitext2 = v.from_python(inn)
-        assert wikitext == wikitext2
-
-
-    def test_googlemap_to_wrmap(self):
-        wikitext = '''
-        <googlemap version="0.9" lat="47.113291" lon="11.272337" zoom="15" height="450">
-        (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>
-        '''
-        attributes, coords, paths = wrpylib.mwmarkup.parse_googlemap(wikitext)
-        json = wrpylib.wrmwmarkup.googlemap_to_wrmap(attributes, coords, paths)
-        assert json['properties']['lon'] == 11.272337
-        assert json['properties']['lat'] == 47.113291
-        assert json['properties']['zoom'] == 15
-        assert json['properties']['height'] == 450
-        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'] == '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]]
-
+class TestWrMap(unittest.TestCase):
     def test_parse_wrmap(self):
         wikitext = '''
         <wrmap lat="47.2417134" lon="11.21408895" zoom="14" width="700" height="400">