Converted encoding to UTF-8.
[philipp/winterrodeln/wrpylib.git] / tests / test_wrvalidators.py
index ff56cfe237c10e28de1c060bf5242232465713b0..8b2fd82bf1980dc3891443e19fd6bdc42b0f9b8f 100644 (file)
@@ -1,7 +1,4 @@
 #!/usr/bin/python3.4
-# -*- coding: iso-8859-15 -*-
-import collections
-import wrpylib.wrvalidators
 import unittest
 from wrpylib.wrvalidators import *
 
@@ -59,7 +56,7 @@ class TestCoice(unittest.TestCase):
     def setUp(self):
         self.choices = ['abc', 'def', 'ghi']
 
-    def from_str(self):
+    def test_from_str(self):
         self.assertEqual('abc', choice_from_str('abc', self.choices))
         self.assertEqual('ghi', choice_from_str('ghi', self.choices))
         with self.assertRaises(ValueError):
@@ -109,11 +106,16 @@ class TestValueCommentConverter(unittest.TestCase):
         self.assertEqual(('abc', 'defg'), value_comment_from_str('abc (defg)', str_from_str, str_from_str))
         self.assertEqual(('abc', ''), value_comment_from_str('abc ()', str_from_str, str_from_str))
         self.assertEqual(('', 'def'), value_comment_from_str('(def)', str_from_str, str_from_str))
-        self.assertEqual(('ab', '(cd)'), value_comment_from_str('ab((cd))', str_from_str, str_from_str))
-        self.assertEqual(('ab', '(c(d)[(]))'), value_comment_from_str('ab((c(d)[(])))', str_from_str, str_from_str))
-        self.assertEqual(('ab(', 'cd'), value_comment_from_str('ab((cd)', str_from_str, str_from_str))
-        self.assertEqual(('abcd', 'ef'), value_comment_from_str('abcd  (ef) ', str_from_str, str_from_str))
+        self.assertEqual(('ab', '(cd)'), value_comment_from_str('ab ((cd))', str_from_str, str_from_str))
+        self.assertEqual(('ab', '(c(d)[(]))'), value_comment_from_str('ab ((c(d)[(])))', str_from_str, str_from_str))
+        self.assertEqual(('ab(', 'cd'), value_comment_from_str('ab( (cd)', str_from_str, str_from_str))
+        self.assertEqual(('abcd ', 'ef'), value_comment_from_str('abcd  (ef)', str_from_str, str_from_str))
         self.assertEqual(('abc', ''), value_comment_from_str('abc', str_from_str, str_from_str, comment_optional=True))
+        self.assertEqual(('a(bc)de', 'fg'), value_comment_from_str('a(bc)de (fg)', str_from_str, str_from_str))
+        self.assertEqual(('a(bc)de', 'fg'), value_comment_from_str('a(bc)de (fg)', str_from_str, str_from_str, comment_optional=True))
+        self.assertEqual(('a(bc)de', 'f(g)'), value_comment_from_str('a(bc)de (f(g))', str_from_str, str_from_str))
+        self.assertEqual(('a(bc)de', 'f(g)'), value_comment_from_str('a(bc)de (f(g))', str_from_str, str_from_str, comment_optional=True))
+        self.assertEqual(('a(bc)de', None), value_comment_from_str('a(bc)de', str_from_str, opt_str_from_str, comment_optional=True))
         with self.assertRaises(ValueError):
             value_comment_from_str('abc (', str_from_str, str_from_str)
         with self.assertRaises(ValueError):
@@ -124,6 +126,8 @@ class TestValueCommentConverter(unittest.TestCase):
             value_comment_from_str('abc (b))', str_from_str, str_from_str)
         with self.assertRaises(ValueError):
             value_comment_from_str('abc', str_from_str, str_from_str)
+        with self.assertRaises(ValueError):
+            value_comment_from_str('abc(def)', str_from_str, str_from_str)
 
     def test_to_str(self):
         self.assertEqual('abc (defg)', value_comment_to_str(('abc', 'defg'), str_to_str, str_to_str))
@@ -134,6 +138,11 @@ class TestValueCommentConverter(unittest.TestCase):
         self.assertEqual('ab( (cd)', value_comment_to_str(('ab(', 'cd'), str_to_str, str_to_str))
         self.assertEqual('abcd (ef)', value_comment_to_str(('abcd', 'ef'), str_to_str, str_to_str))
         self.assertEqual('abc', value_comment_to_str(('abc', ''), str_to_str, str_to_str, comment_optional=True))
+        self.assertEqual('a(bc)de (fg)', value_comment_to_str(('a(bc)de', 'fg'), str_to_str, str_to_str))
+        self.assertEqual('a(bc)de (fg)', value_comment_to_str(('a(bc)de', 'fg'), str_to_str, str_to_str, comment_optional=True))
+        self.assertEqual('a(bc)de (f(g))', value_comment_to_str(('a(bc)de', 'f(g)'), str_to_str, str_to_str))
+        self.assertEqual('a(bc)de (f(g))', value_comment_to_str(('a(bc)de', 'f(g)'), str_to_str, str_to_str, comment_optional=True))
+        self.assertEqual('a(bc)de', value_comment_to_str(('a(bc)de', None), str_to_str, opt_str_to_str, comment_optional=True))
 
 
 # string converter
@@ -335,8 +344,8 @@ class TestOptTristateGermanComment(unittest.TestCase):
 class TestUrl(unittest.TestCase):
     def test_from_str(self):
         self.assertEqual('http://www.winterrodeln.org/wiki/Arzler_Alm/', url_from_str('http://www.winterrodeln.org/wiki/Arzler_Alm/'))
-        self.assertEqual('http://www.winterrodeln.org/wiki/Nösslachhütte/', url_from_str('http://www.winterrodeln.org/wiki/Nösslachhütte/'))
-        self.assertEqual('https://www.winterrodeln.org/wiki/Nösslachhütte/', url_from_str('https://www.winterrodeln.org/wiki/Nösslachhütte/'))
+        self.assertEqual('http://www.winterrodeln.org/wiki/Nösslachhütte/', url_from_str('http://www.winterrodeln.org/wiki/Nösslachhütte/'))
+        self.assertEqual('https://www.winterrodeln.org/wiki/Nösslachhütte/', url_from_str('https://www.winterrodeln.org/wiki/Nösslachhütte/'))
         with self.assertRaises(ValueError):
             url_from_str('mailto:office@example.com')
         with self.assertRaises(ValueError):
@@ -344,8 +353,8 @@ class TestUrl(unittest.TestCase):
 
     def test_to_str(self):
         self.assertEqual('http://www.winterrodeln.org/wiki/Arzler_Alm/', url_to_str('http://www.winterrodeln.org/wiki/Arzler_Alm/'))
-        self.assertEqual('http://www.winterrodeln.org/wiki/Nösslachhütte/', url_to_str('http://www.winterrodeln.org/wiki/Nösslachhütte/'))
-        self.assertEqual('https://www.winterrodeln.org/wiki/Nösslachhütte/', url_to_str('https://www.winterrodeln.org/wiki/Nösslachhütte/'))
+        self.assertEqual('http://www.winterrodeln.org/wiki/Nösslachhütte/', url_to_str('http://www.winterrodeln.org/wiki/Nösslachhütte/'))
+        self.assertEqual('https://www.winterrodeln.org/wiki/Nösslachhütte/', url_to_str('https://www.winterrodeln.org/wiki/Nösslachhütte/'))
 
 
 # webauskunft converter
@@ -399,8 +408,8 @@ class TestOptWikipageEnum(unittest.TestCase):
 
 class TestEmail(unittest.TestCase):
     def setUp(self):
-        self.good_addresses = ['office@example.com', 'winter+rodeln@localhost', 'joe.doe@exämple.com']
-        self.bad_addresses = ['öffice@example.com', 'winter rodeln@localhost', 'www.winterrodeln.org', 'mailto:info@example.com', 'info@example.com.']
+        self.good_addresses = ['office@example.com', 'winter+rodeln@localhost', 'joe.doe@exämple.com']
+        self.bad_addresses = ['öffice@example.com', 'winter rodeln@localhost', 'www.winterrodeln.org', 'mailto:info@example.com', 'info@example.com.']
 
     def test_from_str(self):
         for value in self.good_addresses:
@@ -518,9 +527,37 @@ class TestDifficultyGerman(unittest.TestCase):
         self.assertEqual('leicht', difficulty_german_to_str(1))
 
 
-# TODO: avalanches converter
+# avalanches converter
 # --------------------
 
+class TestAvalancesGermanConverter(unittest.TestCase):
+    def test_from_str(self):
+        self.assertEqual(1, avalanches_german_from_str('kaum'))
+        self.assertEqual(1, opt_avalanches_german_from_str('kaum'))
+        self.assertEqual(2, avalanches_german_from_str('selten'))
+        self.assertEqual(2, opt_avalanches_german_from_str('selten'))
+        self.assertEqual(3, avalanches_german_from_str('gelegentlich'))
+        self.assertEqual(3, opt_avalanches_german_from_str('gelegentlich'))
+        self.assertEqual(4, avalanches_german_from_str('häufig'))
+        self.assertEqual(4, opt_avalanches_german_from_str('häufig'))
+        self.assertEqual(None, opt_avalanches_german_from_str(''))
+        with self.assertRaises(ValueError):
+            avalanches_german_from_str('immer')
+        with self.assertRaises(ValueError):
+            opt_avalanches_german_from_str('immer')
+        with self.assertRaises(ValueError):
+            avalanches_german_from_str('')
+
+    def test_to_str(self):
+        self.assertEqual('kaum', avalanches_german_to_str(1))
+        self.assertEqual('kaum', opt_avalanches_german_to_str(1))
+        self.assertEqual('selten', avalanches_german_to_str(2))
+        self.assertEqual('selten', opt_avalanches_german_to_str(2))
+        self.assertEqual('gelegentlich', avalanches_german_to_str(3))
+        self.assertEqual('gelegentlich', opt_avalanches_german_to_str(3))
+        self.assertEqual('häufig', avalanches_german_to_str(4))
+        self.assertEqual('häufig', opt_avalanches_german_to_str(4))
+        self.assertEqual('', opt_avalanches_german_to_str(None))
 
 
 # lift converter
@@ -531,7 +568,7 @@ class TestLiftGermanValidator(unittest.TestCase):
         self.assertEqual(lift_german_from_str(''), None)
         self.assertEqual([], lift_german_from_str('Nein'))
         self.assertEqual([('Sessellift', None)], lift_german_from_str('Sessellift'))
-        self.assertEqual([('Gondel', 'nur bis zur Hälfte')], lift_german_from_str('Gondel (nur bis zur Hälfte)'))
+        self.assertEqual([('Gondel', 'nur bis zur Hälfte')], lift_german_from_str('Gondel (nur bis zur Hälfte)'))
         self.assertEqual([('Sessellift', None), ('Taxi', None)], lift_german_from_str('Sessellift; Taxi'))
         self.assertEqual([('Sessellift', 'Wochenende'), ('Taxi', '6 Euro')], lift_german_from_str('Sessellift (Wochenende); Taxi (6 Euro)'))
 
@@ -539,55 +576,96 @@ class TestLiftGermanValidator(unittest.TestCase):
         self.assertEqual('', lift_german_to_str(None))
         self.assertEqual('Nein', lift_german_to_str([]))
         self.assertEqual('Sessellift', lift_german_to_str([('Sessellift', None)]))
-        self.assertEqual('Gondel (nur bis zur Hälfte)', lift_german_to_str([('Gondel', 'nur bis zur Hälfte')]))
+        self.assertEqual('Gondel (nur bis zur Hälfte)', lift_german_to_str([('Gondel', 'nur bis zur Hälfte')]))
         self.assertEqual('Sessellift; Taxi', lift_german_to_str([('Sessellift', None), ('Taxi', None)]))
         self.assertEqual('Sessellift (Wochenende); Taxi (6 Euro)', lift_german_to_str([('Sessellift', 'Wochenende'), ('Taxi', '6 Euro')]))
 
 
-# TODO: public transport converter
+# public transport converter
 # --------------------------
 
+class TestPublicTransportGerman(unittest.TestCase):
+    def test_from_str(self):
+        self.assertEqual(1, public_transport_german_from_str('Sehr gut'))
+        self.assertEqual(1, opt_public_transport_german_from_str('Sehr gut'))
+        self.assertEqual(2, public_transport_german_from_str('Gut'))
+        self.assertEqual(2, opt_public_transport_german_from_str('Gut'))
+        self.assertEqual(3, public_transport_german_from_str('Mittelmäßig'))
+        self.assertEqual(3, opt_public_transport_german_from_str('Mittelmäßig'))
+        self.assertEqual(4, public_transport_german_from_str('Schlecht'))
+        self.assertEqual(4, opt_public_transport_german_from_str('Schlecht'))
+        self.assertEqual(5, public_transport_german_from_str('Nein'))
+        self.assertEqual(5, opt_public_transport_german_from_str('Nein'))
+        self.assertEqual(6, public_transport_german_from_str('Ja'))
+        self.assertEqual(6, opt_public_transport_german_from_str('Ja'))
+        self.assertEqual(None, opt_public_transport_german_from_str(''))
+        with self.assertRaises(ValueError):
+            public_transport_german_from_str('')
+        with self.assertRaises(ValueError):
+            public_transport_german_from_str('Naja')
+        with self.assertRaises(ValueError):
+            opt_public_transport_german_from_str('Naja')
+
+    def test_to_str(self):
+        self.assertEqual('Sehr gut', public_transport_german_to_str(1))
+        self.assertEqual('Sehr gut', opt_public_transport_german_to_str(1))
+        self.assertEqual('Gut', public_transport_german_to_str(2))
+        self.assertEqual('Gut', opt_public_transport_german_to_str(2))
+        self.assertEqual('Mittelmäßig', public_transport_german_to_str(3))
+        self.assertEqual('Mittelmäßig', opt_public_transport_german_to_str(3))
+        self.assertEqual('Schlecht', public_transport_german_to_str(4))
+        self.assertEqual('Schlecht', opt_public_transport_german_to_str(4))
+        self.assertEqual('Nein', public_transport_german_to_str(5))
+        self.assertEqual('Nein', opt_public_transport_german_to_str(5))
+        self.assertEqual('Ja', public_transport_german_to_str(6))
+        self.assertEqual('Ja', opt_public_transport_german_to_str(6))
+        self.assertEqual('', opt_public_transport_german_to_str(None))
+
 
 # cachet converter
 # ----------------
 
 class TestSingleCachet(unittest.TestCase):
     def test_from_str(self):
-        self.assertEqual(('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel'), single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'))
-        self.assertEqual(('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer'), single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer'))
+        self.assertEqual(('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel'), single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'))
+        self.assertEqual(('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer'), single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer'))
         with self.assertRaises(ValueError):
             single_cachet_german_from_str('')
         with self.assertRaises(ValueError):
-            single_cachet_german_from_str('Salzburger Naturrodelbahn-Gütesiegel 2013 schwer')
+            single_cachet_german_from_str('Salzburger Naturrodelbahn-Gütesiegel 2013 schwer')
+        with self.assertRaises(ValueError):
+            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 4013 schwer')
+        with self.assertRaises(ValueError):
+            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 13 schwer')
         with self.assertRaises(ValueError):
-            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 4013 schwer')
+            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwerer')
         with self.assertRaises(ValueError):
-            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 13 schwer')
+            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel schwer')
         with self.assertRaises(ValueError):
-            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwerer')
+            single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013')
 
     def test_to_str(self):
-        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel', single_cachet_german_to_str(('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')))
-        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer', single_cachet_german_to_str(('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer')))
+        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel', single_cachet_german_to_str(('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')))
+        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer', single_cachet_german_to_str(('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer')))
 
 
 class TestCachetGerman(unittest.TestCase):
     def test_from_str(self):
         self.assertEqual(cachet_german_from_str(''), None)
         self.assertEqual([], cachet_german_from_str('Nein'))
-        self.assertEqual([('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')], cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'))
-        self.assertEqual([('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer'), ('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')], 
-                         cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer; Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'))
+        self.assertEqual([('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')], cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'))
+        self.assertEqual([('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer'), ('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')], 
+                         cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer; Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'))
         with self.assertRaises(ValueError):
             cachet_german_from_str('Ja')
         with self.assertRaises(ValueError):
-            cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer Tiroler Naturrodelbahn-Gütesiegel 2009 mittel')
+            cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer Tiroler Naturrodelbahn-Gütesiegel 2009 mittel')
 
     def test_to_str(self):
         self.assertEqual('', cachet_german_to_str(None))
         self.assertEqual('Nein', cachet_german_to_str([]))
-        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel', cachet_german_to_str([('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]))
-        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer; Tiroler Naturrodelbahn-Gütesiegel 2009 mittel', cachet_german_to_str([('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer'), ('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]))
+        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel', cachet_german_to_str([('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]))
+        self.assertEqual('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer; Tiroler Naturrodelbahn-Gütesiegel 2009 mittel', cachet_german_to_str([('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer'), ('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]))
 
 
 # night light days converter
@@ -682,26 +760,26 @@ class TestRodelbahnbox(unittest.TestCase):
 '''{{Rodelbahnbox
 | Position             = 46.807218 N 12.806522 E
 | Position oben        = 46.799014 N 12.818658 E
-| Höhe oben            = 1046
+| Höhe oben            = 1046
 | Position unten       =
-| Höhe unten           =
-| Länge                = 3500
+| Höhe unten           =
+| Länge                = 3500
 | Schwierigkeit        = mittel
 | Lawinen              = kaum
-| Betreiber            = Bringungsgemeinschaft Kreithof-Dolomitenhütte
-| Öffentliche Anreise  = Schlecht
-| Aufstieg möglich     = Ja
+| Betreiber            = Bringungsgemeinschaft Kreithof-Dolomitenhütte
+| Öffentliche Anreise  = Schlecht
+| Aufstieg möglich     = Ja
 | Aufstieg getrennt    = Teilweise
 | Gehzeit              = 75
 | Aufstiegshilfe       = Taxi; Sonstige (PKW bis Kreithof)
 | Beleuchtungsanlage   = Ja
 | Beleuchtungstage     = 7
 | Rodelverleih         = Nein
-| Gütesiegel           = Tiroler Naturrodelbahn-Gütesiegel 2009 mittel
+| Gütesiegel           = Tiroler Naturrodelbahn-Gütesiegel 2009 mittel
 | Webauskunft          = http://www.lienzerdolomiten.info/at/tobogorpt.html
-| Telefonauskunft      = +43-664-2253782 (Dolomitenhütte)
+| Telefonauskunft      = +43-664-2253782 (Dolomitenhütte)
 | Bild                 = Dolomitenrodelbahn Tristach 2011-12-22 oberer Bereich.jpg
-| In Übersichtskarte   = Ja
+| In Übersichtskarte   = Ja
 | Forumid              = 139
 }}'''
 
@@ -709,52 +787,52 @@ class TestRodelbahnbox(unittest.TestCase):
         value = rodelbahnbox_from_str(self.value)
         self.assertEqual(LonLat(12.806522, 46.807218), value['Position'])
         self.assertEqual(LonLat(12.818658, 46.799014), value['Position oben'])
-        self.assertEqual(1046, value['Höhe oben'])
+        self.assertEqual(1046, value['Höhe oben'])
         self.assertEqual(LonLat(None, None), value['Position unten'])
-        self.assertEqual(None, value['Höhe unten'])
-        self.assertEqual(3500, value['Länge'])
+        self.assertEqual(None, value['Höhe unten'])
+        self.assertEqual(3500, value['Länge'])
         self.assertEqual(2, value['Schwierigkeit'])
         self.assertEqual(1, value['Lawinen'])
-        self.assertEqual('Bringungsgemeinschaft Kreithof-Dolomitenhütte', value['Betreiber'])
-        self.assertEqual(4, value['Öffentliche Anreise'])
-        self.assertEqual(True, value['Aufstieg möglich'])
+        self.assertEqual('Bringungsgemeinschaft Kreithof-Dolomitenhütte', value['Betreiber'])
+        self.assertEqual(4, value['Öffentliche Anreise'])
+        self.assertEqual(True, value['Aufstieg möglich'])
         self.assertEqual((0.5, None), value['Aufstieg getrennt'])
         self.assertEqual(75, value['Gehzeit'])
         self.assertEqual([('Taxi', None), ('Sonstige', 'PKW bis Kreithof')], value['Aufstiegshilfe'])
         self.assertEqual((1.0, None), value['Beleuchtungsanlage'])
         self.assertEqual((7, None), value['Beleuchtungstage'])
         self.assertEqual([], value['Rodelverleih'])
-        self.assertEqual([('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')], value['Gütesiegel'])
+        self.assertEqual([('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')], value['Gütesiegel'])
         self.assertEqual((True, 'http://www.lienzerdolomiten.info/at/tobogorpt.html'), value['Webauskunft'])
-        self.assertEqual([('+43-664-2253782', 'Dolomitenhütte')], value['Telefonauskunft'])
+        self.assertEqual([('+43-664-2253782', 'Dolomitenhütte')], value['Telefonauskunft'])
         self.assertEqual('Dolomitenrodelbahn Tristach 2011-12-22 oberer Bereich.jpg', value['Bild'])
-        self.assertEqual(True, value['In Übersichtskarte'])
+        self.assertEqual(True, value['In Übersichtskarte'])
         self.assertEqual(139, value['Forumid'])
 
     def test_to_str(self):
         value = OrderedDict([
             ('Position', LonLat(12.806522, 46.807218)),
             ('Position oben', LonLat(12.818658, 46.799014)),
-            ('Höhe oben', 1046),
+            ('Höhe oben', 1046),
             ('Position unten', LonLat(None, None)),
-            ('Höhe unten', None),
-            ('Länge', 3500),
+            ('Höhe unten', None),
+            ('Länge', 3500),
             ('Schwierigkeit', 2),
             ('Lawinen', 1),
-            ('Betreiber', 'Bringungsgemeinschaft Kreithof-Dolomitenhütte'),
-            ('Öffentliche Anreise', 4),
-            ('Aufstieg möglich', True),
+            ('Betreiber', 'Bringungsgemeinschaft Kreithof-Dolomitenhütte'),
+            ('Öffentliche Anreise', 4),
+            ('Aufstieg möglich', True),
             ('Aufstieg getrennt', (0.5, None)),
             ('Gehzeit', 75),
             ('Aufstiegshilfe', [('Taxi', None), ('Sonstige', 'PKW bis Kreithof')]),
             ('Beleuchtungsanlage', (1.0, None)),
             ('Beleuchtungstage', (7, None)),
             ('Rodelverleih', []),
-            ('Gütesiegel', [('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]),
+            ('Gütesiegel', [('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]),
             ('Webauskunft', (True, 'http://www.lienzerdolomiten.info/at/tobogorpt.html')),
-            ('Telefonauskunft', [('+43-664-2253782', 'Dolomitenhütte')]),
+            ('Telefonauskunft', [('+43-664-2253782', 'Dolomitenhütte')]),
             ('Bild', 'Dolomitenrodelbahn Tristach 2011-12-22 oberer Bereich.jpg'),
-            ('In Übersichtskarte', True),
+            ('In Übersichtskarte', True),
             ('Forumid', 139)])
         self.assertEqual(self.value, rodelbahnbox_to_str(value))
 
@@ -768,10 +846,10 @@ class TestGasthausbox(unittest.TestCase):
         self.value = \
 """{{Gasthausbox
 | Position          = 47.123456 N 11.123456 E
-| Höhe              = 1808
+| Höhe              = 1808
 | Betreiber         = Max Mustermann
-| Sitzplätze        = 50
-| Übernachtung      = 20 Matrazenlager, 3 Doppelzimmer
+| Sitzplätze        = 50
+| Übernachtung      = 20 Matrazenlager, 3 Doppelzimmer
 | Rauchfrei         = Ja
 | Rodelverleih      = 2 Euro (Ausweis erforderlich)
 | Handyempfang      = A1; T-Mobile A
@@ -785,10 +863,10 @@ class TestGasthausbox(unittest.TestCase):
     def test_from_str(self):
         value = gasthausbox_from_str(self.value)
         self.assertEqual(LonLat(11.123456, 47.123456), value['Position'])
-        self.assertEqual(1808, value['Höhe'])
+        self.assertEqual(1808, value['Höhe'])
         self.assertEqual('Max Mustermann', value['Betreiber'])
-        self.assertEqual(50, value['Sitzplätze'])
-        self.assertEqual((True, '20 Matrazenlager, 3 Doppelzimmer'), value['Übernachtung'])
+        self.assertEqual(50, value['Sitzplätze'])
+        self.assertEqual((True, '20 Matrazenlager, 3 Doppelzimmer'), value['Übernachtung'])
         self.assertEqual((True, '2 Euro (Ausweis erforderlich)'), value['Rodelverleih'])
         self.assertEqual(1.0, value['Rauchfrei'])
         self.assertEqual([('A1', None), ('T-Mobile A', None)], value['Handyempfang'])
@@ -801,10 +879,10 @@ class TestGasthausbox(unittest.TestCase):
     def test_to_str(self):
         value = OrderedDict([
             ('Position', LonLat(11.123456, 47.123456)),
-            ('Höhe', 1808),
+            ('Höhe', 1808),
             ('Betreiber', 'Max Mustermann'),
-            ('Sitzplätze', 50),
-            ('Übernachtung', (True, '20 Matrazenlager, 3 Doppelzimmer')),
+            ('Sitzplätze', 50),
+            ('Übernachtung', (True, '20 Matrazenlager, 3 Doppelzimmer')),
             ('Rodelverleih', (True, '2 Euro (Ausweis erforderlich)')),
             ('Rauchfrei', 1.0),
             ('Handyempfang', [('A1', None), ('T-Mobile A', None)]),