#!/usr/bin/python3.4 # -*- coding: iso-8859-15 -*- import collections import wrpylib.wrvalidators import unittest from wrpylib.wrvalidators import * # TODO: optional converter # ------------------ # "no" converter # -------------- class TestNoGermanConverter(unittest.TestCase): def test_from_str(self): self.assertEqual(no_german_from_str('abc'), (True, 'abc')) self.assertEqual(no_german_from_str('Nein'), (False, None)) with self.assertRaises(ValueError): no_german_from_str('') def test_to_str(self): self.assertEqual(no_german_to_str((True, 'abc')), 'abc') self.assertEqual(no_german_to_str((False, None)), 'Nein') # "optional"/"no" converter # ------------------------- class TestOptNoGerman(unittest.TestCase): def test_from_str(self): self.assertEqual(opt_no_german_from_str('abc'), (True, 'abc')) self.assertEqual(opt_no_german_from_str('Nein'), (False, None)) self.assertEqual(opt_no_german_from_str(''), (None, None)) def test_to_str(self): self.assertEqual(opt_no_german_to_str((True, 'abc')), 'abc') self.assertEqual(opt_no_german_to_str((False, None)), 'Nein') self.assertEqual(opt_no_german_to_str((None, None)), '') # TODO: choice converter # ---------------- # TODO: dict converter # -------------- # TODO: enum/"list" converter # --------------------- # TODO: value/comment converter # ----------------------- # string converter # ---------------- class TestStr(unittest.TestCase): def test_from_str(self): self.assertEqual('', str_from_str('')) self.assertEqual('abc', str_from_str('abc')) def test_to_str(self): self.assertEqual('', str_to_str('')) self.assertEqual('abc', str_to_str('abc')) class TestReqStr(unittest.TestCase): def test_from_str(self): self.assertEqual('abc', req_str_from_str('abc')) self.assertEqual(' ', req_str_from_str(' ')) with self.assertRaises(ValueError): req_str_from_str('') class TestOptStr(unittest.TestCase): def test_from_str(self): self.assertEqual('abc', opt_str_from_str('abc')) self.assertEqual(' ', opt_str_from_str(' ')) self.assertEqual(None, opt_str_from_str('')) def test_to_str(self): self.assertEqual('abc', opt_str_to_str('abc')) self.assertEqual(' ', opt_str_to_str(' ')) self.assertEqual('', opt_str_to_str(None)) # TODO: optional no or string converter # ------------------------------- # integer converter # ----------------- class TestInt(unittest.TestCase): def test_from_str(self): self.assertEqual(42, int_from_str('42')) self.assertEqual(42, int_from_str('+42')) self.assertEqual(-20, int_from_str('-20')) self.assertEqual(0, int_from_str('0', min=0)) self.assertEqual(10, int_from_str('10', max=10)) with self.assertRaises(ValueError): int_from_str('abc') with self.assertRaises(ValueError): int_from_str('') with self.assertRaises(ValueError): int_from_str('-1', min=0) with self.assertRaises(ValueError): int_from_str('11', max=10) with self.assertRaises(ValueError): int_from_str('10.0') with self.assertRaises(ValueError): int_from_str('0d') def test_to_str(self): self.assertEqual('20', int_to_str(20)) self.assertEqual('-20', int_to_str(-20)) self.assertEqual('0', int_to_str(0)) class TestOptInt(unittest.TestCase): def test_from_str(self): self.assertEqual(42, opt_int_from_str('42')) self.assertEqual(42, opt_int_from_str('+42')) self.assertEqual(-20, opt_int_from_str('-20')) self.assertEqual(None, opt_int_from_str('')) with self.assertRaises(ValueError): opt_int_from_str('abc') with self.assertRaises(ValueError): opt_int_from_str('10.0') with self.assertRaises(ValueError): opt_int_from_str('0d') def test_to_str(self): self.assertEqual('20', opt_int_to_str(20)) self.assertEqual('-20', opt_int_to_str(-20)) self.assertEqual('0', opt_int_to_str(0)) self.assertEqual('', opt_int_to_str(None)) class TestOptUInt(unittest.TestCase): def test_from_str(self): self.assertEqual(42, opt_uint_from_str('42')) self.assertEqual(0, opt_uint_from_str('0')) self.assertEqual(None, opt_uint_from_str('')) with self.assertRaises(ValueError): opt_uint_from_str('-1') def test_to_str(self): self.assertEqual('20', opt_uint_to_str(20)) self.assertEqual('0', opt_uint_to_str(0)) self.assertEqual('', opt_uint_to_str(None)) # bool converter # -------------- class TestEnumConverter(unittest.TestCase): def test_from_str(self): self.assertEqual(enum_from_str(''), []) self.assertEqual(enum_from_str('abc'), ['abc']) self.assertEqual(enum_from_str('abc; def'), ['abc', 'def']) self.assertEqual(enum_from_str('abc; def;ghi'), ['abc', 'def', 'ghi']) def test_to_str(self): self.assertEqual(enum_to_str(['abc', 'def', 'ghi']), 'abc; def; ghi') self.assertEqual(enum_to_str(['abc']), 'abc') self.assertEqual(enum_to_str(['']), '') self.assertEqual(enum_to_str([]), '') class TestDifficultyGerman(unittest.TestCase): def test_from_str(self): self.assertEqual(difficulty_german_from_str('leicht'), 1) self.assertEqual(difficulty_german_from_str('mittel'), 2) with self.assertRaises(ValueError): difficulty_german_from_str('dontknow') with self.assertRaises(ValueError): difficulty_german_from_str('') def test_to_str(self): self.assertEqual(difficulty_german_to_str(1), 'leicht') class TestTristateGerman(unittest.TestCase): def test_from_str(self): self.assertEqual(tristate_german_from_str('Ja'), 1.0) self.assertEqual(tristate_german_from_str('Teilweise'), 0.5) self.assertEqual(tristate_german_from_str('Nein'), 0) with self.assertRaises(ValueError): tristate_german_from_str('') with self.assertRaises(ValueError): tristate_german_from_str('Vielleicht') def test_to_str(self): self.assertEqual(tristate_german_to_str(1.0), 'Ja') self.assertEqual(tristate_german_to_str(0.5), 'Teilweise') self.assertEqual(tristate_german_to_str(0.0), 'Nein') class TestOptTristateGerman(unittest.TestCase): def test_from_str(self): self.assertEqual(opt_tristate_german_from_str('Ja'), 1.0) self.assertEqual(opt_tristate_german_from_str('Teilweise'), 0.5) self.assertEqual(opt_tristate_german_from_str('Nein'), 0) self.assertEqual(opt_tristate_german_from_str(''), None) with self.assertRaises(ValueError): opt_tristate_german_from_str('Vielleicht') def test_to_str(self): self.assertEqual(opt_tristate_german_to_str(1.0), 'Ja') self.assertEqual(opt_tristate_german_to_str(0.5), 'Teilweise') self.assertEqual(opt_tristate_german_to_str(0.0), 'Nein') self.assertEqual(opt_tristate_german_to_str(None), '') class TestOptTristateGermanComment(unittest.TestCase): def test_from_str(self): self.assertEqual(opt_tristate_german_comment_from_str('Ja'), (1.0, None)) self.assertEqual(opt_tristate_german_comment_from_str('Teilweise'), (0.5, None)) self.assertEqual(opt_tristate_german_comment_from_str('Nein'), (0, None)) self.assertEqual(opt_tristate_german_comment_from_str('Teilweise (nur ganz oben nicht)'), (0.5, 'nur ganz oben nicht')) self.assertEqual(opt_tristate_german_comment_from_str(''), (None, None)) with self.assertRaises(ValueError): opt_tristate_german_from_str('Vielleicht') with self.assertRaises(ValueError): opt_tristate_german_from_str('(Ja)') def test_to_str(self): self.assertEqual(opt_tristate_german_comment_to_str((1.0, None)), 'Ja') self.assertEqual(opt_tristate_german_comment_to_str((0.5, None)), 'Teilweise') self.assertEqual(opt_tristate_german_comment_to_str((0.0, None)), 'Nein') self.assertEqual(opt_tristate_german_comment_to_str((None, None)), '') class TestLonLat(unittest.TestCase): def test_from_str(self): self.assertEqual(lonlat_from_str('47.076207 N 11.453553 E'), LonLat(11.453553, 47.076207)) with self.assertRaises(ValueError): lonlat_from_str('47.076207 N 11.453553') def test_to_str(self): self.assertEqual(lonlat_to_str(LonLat(11.453553, 47.076207)), '47.076207 N 11.453553 E') class TestValueCommentConverter(unittest.TestCase): def test_from_str(self): self.assertEqual(value_comment_from_str('abc (defg)'), ('abc', 'defg')) self.assertEqual(value_comment_from_str('abc ()'), ('abc', '')) self.assertEqual(value_comment_from_str('(def)'), ('', 'def')) self.assertEqual(value_comment_from_str('ab((cd))'), ('ab', '(cd)')) self.assertEqual(value_comment_from_str('ab((c(d)[(])))'), ('ab', '(c(d)[(]))')) self.assertEqual(value_comment_from_str('ab((cd)'), ('ab(', 'cd')) self.assertEqual(value_comment_from_str('abcd (ef) '), ('abcd', 'ef')) self.assertEqual(value_comment_from_str('abc', comment_optional=True), ('abc', '')) with self.assertRaises(ValueError): value_comment_from_str('abc (') with self.assertRaises(ValueError): value_comment_from_str('abc )') with self.assertRaises(ValueError): value_comment_from_str('abc (def)g') with self.assertRaises(ValueError): value_comment_from_str('abc (b))') with self.assertRaises(ValueError): value_comment_from_str('abc') def test_to_str(self): self.assertEqual(value_comment_to_str(('abc', 'defg')), 'abc (defg)') self.assertEqual(value_comment_to_str(('abc', '')), 'abc ()') self.assertEqual(value_comment_to_str(('', 'def')), '(def)') self.assertEqual(value_comment_to_str(('ab', '(cd)')), 'ab ((cd))') self.assertEqual(value_comment_to_str(('ab', '(c(d)[(]))')), 'ab ((c(d)[(])))') self.assertEqual(value_comment_to_str(('ab(', 'cd')), 'ab( (cd)') self.assertEqual(value_comment_to_str(('abcd', 'ef')), 'abcd (ef)') self.assertEqual(value_comment_to_str(('abc', ''), comment_optional=True), 'abc') class TestLiftGermanValidator(unittest.TestCase): def test_from_str(self): self.assertEqual(lift_german_from_str(''), None) self.assertEqual(lift_german_from_str('Nein'), []) self.assertEqual(lift_german_from_str('Sessellift'), [('Sessellift', None)]) self.assertEqual(lift_german_from_str('Gondel (nur bis zur Hälfte)'), [('Gondel', 'nur bis zur Hälfte')]) self.assertEqual(lift_german_from_str('Sessellift; Taxi'), [('Sessellift', None), ('Taxi', None)]) self.assertEqual(lift_german_from_str('Sessellift (Wochenende); Taxi (6 Euro)'), [('Sessellift', 'Wochenende'), ('Taxi', '6 Euro')]) def test_to_str(self): self.assertEqual(lift_german_to_str(None), '') self.assertEqual(lift_german_to_str([]), 'Nein') self.assertEqual(lift_german_to_str([('Sessellift', None)]), 'Sessellift') self.assertEqual(lift_german_to_str([('Gondel', 'nur bis zur Hälfte')]), 'Gondel (nur bis zur Hälfte)') self.assertEqual(lift_german_to_str([('Sessellift', None), ('Taxi', None)]), 'Sessellift; Taxi') self.assertEqual(lift_german_to_str([('Sessellift', 'Wochenende'), ('Taxi', '6 Euro')]), 'Sessellift (Wochenende); Taxi (6 Euro)') class TestNightLightDays(unittest.TestCase): def test_from_str(self): self.assertEqual(nightlightdays_from_str(''), (None, None)) self.assertEqual(nightlightdays_from_str('2 (Mo, Di)'), (2, 'Mo, Di')) self.assertEqual(nightlightdays_from_str('7'), (7, None)) self.assertEqual(nightlightdays_from_str('0'), (0, None)) self.assertEqual(nightlightdays_from_str('(keine Ahnung)'), (None, 'keine Ahnung')) with self.assertRaises(ValueError): nightlightdays_from_str('8') with self.assertRaises(ValueError): nightlightdays_from_str('5 (Montag') with self.assertRaises(ValueError): nightlightdays_from_str('5.2') def test_to_str(self): self.assertEqual(nightlightdays_to_str((None, None)), '') self.assertEqual(nightlightdays_to_str((2, 'Mo, Di')), '2 (Mo, Di)') self.assertEqual(nightlightdays_to_str((7, None)), '7') self.assertEqual(nightlightdays_to_str((0, None)), '0') class TestOptStrOptCommentEnum(unittest.TestCase): def test_from_str(self): self.assertEqual(opt_str_opt_comment_enum_from_str(''), None) self.assertEqual(opt_str_opt_comment_enum_from_str('Nein'), []) self.assertEqual(opt_str_opt_comment_enum_from_str('Talstation'), [('Talstation', None)]) self.assertEqual(opt_str_opt_comment_enum_from_str('Talstation (unten)'), [('Talstation', 'unten')]) self.assertEqual(opt_str_opt_comment_enum_from_str('Talstation (unten); Mittelstation'), [('Talstation', 'unten'), ('Mittelstation', None)]) with self.assertRaises(ValueError): opt_str_opt_comment_enum_from_str('(unten)') with self.assertRaises(ValueError): opt_str_opt_comment_enum_from_str('Talstation (unten); ; Mittelstation') def test_to_str(self): self.assertEqual(opt_str_opt_comment_enum_to_str(None), '') self.assertEqual(opt_str_opt_comment_enum_to_str([]), 'Nein') self.assertEqual(opt_str_opt_comment_enum_to_str([('Talstation', None)]), 'Talstation') self.assertEqual(opt_str_opt_comment_enum_to_str([('Talstation', 'unten')]), 'Talstation (unten)') self.assertEqual(opt_str_opt_comment_enum_to_str([('Talstation', 'unten'), ('Mittelstation', None)]), 'Talstation (unten); Mittelstation') class TestNoOrStr(unittest.TestCase): def test_from_str(self): self.assertEqual((False, None), opt_no_or_str_from_str('Nein')) self.assertEqual((True, 'Nur Wochenende'), opt_no_or_str_from_str('Nur Wochenende')) self.assertEqual((True, 'Ja'), opt_no_or_str_from_str('Ja')) self.assertEqual((None, None), opt_no_or_str_from_str('')) def test_to_str(self): self.assertEqual('Nein', opt_no_or_str_to_str((False, None))) self.assertEqual('Nur Wochenende', opt_no_or_str_to_str((True, 'Nur Wochenende'))) self.assertEqual('Ja', opt_no_or_str_to_str((True, 'Ja'))) self.assertEqual('', opt_no_or_str_to_str((None, None))) class TestSingleCachet(unittest.TestCase): def test_from_str(self): self.assertEqual(single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'), ('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')) self.assertEqual(single_cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer'), ('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') 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 2013 schwerer') def test_to_str(self): self.assertEqual(single_cachet_german_to_str(('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')), 'Tiroler Naturrodelbahn-Gütesiegel 2009 mittel') self.assertEqual(single_cachet_german_to_str(('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer')), '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(cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'), [('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]) self.assertEqual(cachet_german_from_str('Tiroler Naturrodelbahn-Gütesiegel 2013 schwer; Tiroler Naturrodelbahn-Gütesiegel 2009 mittel'), [('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') def test_to_str(self): self.assertEqual(cachet_german_to_str(None), '') self.assertEqual(cachet_german_to_str([]), 'Nein') self.assertEqual(cachet_german_to_str([('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]), 'Tiroler Naturrodelbahn-Gütesiegel 2009 mittel') self.assertEqual(cachet_german_to_str([('Tiroler Naturrodelbahn-Gütesiegel', '2013', 'schwer'), ('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]), 'Tiroler Naturrodelbahn-Gütesiegel 2013 schwer; Tiroler Naturrodelbahn-Gütesiegel 2009 mittel') class TestUrl(unittest.TestCase): def test_from_str(self): self.assertEqual(url_from_str('http://www.winterrodeln.org/wiki/Arzler_Alm/'), 'http://www.winterrodeln.org/wiki/Arzler_Alm/') self.assertEqual(url_from_str('http://www.winterrodeln.org/wiki/Nösslachhütte/'), 'http://www.winterrodeln.org/wiki/Nösslachhütte/') self.assertEqual(url_from_str('https://www.winterrodeln.org/wiki/Nösslachhütte/'), 'https://www.winterrodeln.org/wiki/Nösslachhütte/') with self.assertRaises(ValueError): url_from_str('mailto:office@example.com') with self.assertRaises(ValueError): url_from_str('/wiki/Arzler_Alm/') def test_to_str(self): self.assertEqual(url_to_str('http://www.winterrodeln.org/wiki/Arzler_Alm/'), 'http://www.winterrodeln.org/wiki/Arzler_Alm/') self.assertEqual(url_to_str('http://www.winterrodeln.org/wiki/Nösslachhütte/'), 'http://www.winterrodeln.org/wiki/Nösslachhütte/') self.assertEqual(url_to_str('https://www.winterrodeln.org/wiki/Nösslachhütte/'), 'https://www.winterrodeln.org/wiki/Nösslachhütte/') class TestWebauskunft(unittest.TestCase): def test_from_str(self): self.assertEqual(webauskunft_from_str('http://www.example.com/current'), (True, 'http://www.example.com/current')) self.assertEqual(webauskunft_from_str(''), (None, None)) self.assertEqual(webauskunft_from_str('Nein'), (False, None)) def test_to_str(self): self.assertEqual(webauskunft_to_str((True, 'http://www.example.com/current')), 'http://www.example.com/current') self.assertEqual(webauskunft_to_str((None, None)), '') self.assertEqual(webauskunft_to_str((False, None)), 'Nein') class TestPhoneNumber(unittest.TestCase): def test_from_str(self): self.assertEqual(phone_number_from_str('+43-699-123456789'), '+43-699-123456789') self.assertEqual(phone_number_from_str('+43-69945'), '+43-69945') self.assertEqual(phone_number_from_str('+43-512-507-6418'), '+43-512-507-6418') with self.assertRaises(ValueError): phone_number_from_str('+43-') with self.assertRaises(ValueError): phone_number_from_str('0512123456789') def test_to_str(self): self.assertEqual(phone_number_to_str('+43-699-123456789'), '+43-699-123456789') self.assertEqual(phone_number_to_str('+43-69945'), '+43-69945') self.assertEqual(phone_number_to_str('+43-512-507-6418'), '+43-512-507-6418') class TestTelefonauskunft(unittest.TestCase): def test_from_str(self): self.assertEqual(opt_phone_comment_enum_from_str(''), None) self.assertEqual(opt_phone_comment_enum_from_str('Nein'), []) self.assertEqual(opt_phone_comment_enum_from_str('+43-512-123456 (untertags)'), [('+43-512-123456', 'untertags')]) self.assertEqual(opt_phone_comment_enum_from_str('+43-512-1234 (untertags); +43-664-123456 (Alm)'), [('+43-512-1234', 'untertags'), ('+43-664-123456', 'Alm')]) with self.assertRaises(ValueError): opt_phone_comment_enum_from_str('+43-512-123456+ (untertags)') with self.assertRaises(ValueError): opt_phone_comment_enum_from_str('+43-512-123456') def test_to_str(self): self.assertEqual(opt_phone_comment_enum_to_str(None), '') self.assertEqual(opt_phone_comment_enum_to_str([]), 'Nein') self.assertEqual(opt_phone_comment_enum_to_str([('+43-512-123456', 'untertags')]), '+43-512-123456 (untertags)') self.assertEqual(opt_phone_comment_enum_to_str([('+43-512-1234', 'untertags'), ('+43-664-123456', 'Alm')]), '+43-512-1234 (untertags); +43-664-123456 (Alm)') 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.'] def test_from_str(self): for value in self.good_addresses: self.assertEqual(value, email_from_str(value)) for value in self.bad_addresses: with self.assertRaises(ValueError): email_from_str(value) def test_to_str(self): for value in self.good_addresses: self.assertEqual(value, email_to_str(value)) class TestMaskedEmail(unittest.TestCase): def test_from_str(self): self.assertEqual(('office@example.com', False), masked_email_from_str('office@example.com')) self.assertEqual(('office@example.com', True), masked_email_from_str('office(at)example.com')) with self.assertRaises(ValueError): masked_email_from_str('office@example.com', masked_only=True) with self.assertRaises(ValueError): masked_email_from_str('off ice@example.com') def test_to_str(self): self.assertEqual('office@example.com', masked_email_to_str(('office@example.com', False))) self.assertEqual('office(at)example.com', masked_email_to_str(('office@example.com', True))) self.assertEqual('office()example.com', masked_email_to_str(('office@example.com', True), '()')) class TestEmails(unittest.TestCase): def test_from_str(self): self.assertEqual(None, emails_from_str('')) self.assertEqual([], emails_from_str('Nein')) self.assertEqual([(('info@example.com', False), None)], emails_from_str('info@example.com')) # self.assertEqual([(('info@example.com', True), None)], emails_from_str('info(at)example.com')) self.assertEqual([(('info@example.com', False), 'Office')], emails_from_str('info@example.com (Office)')) self.assertEqual([(('info@example.com', False), None), (('home@example.com', False), 'Privat')], emails_from_str('info@example.com; home@example.com (Privat)')) with self.assertRaises(ValueError): emails_from_str('nein') with self.assertRaises(ValueError): emails_from_str('info@example.com; ho me@example.com (Privat)') def test_to_str(self): self.assertEqual('', emails_to_str(None)) self.assertEqual('Nein', emails_to_str([])) self.assertEqual('info@example.com', emails_to_str([(('info@example.com', False), None)])) self.assertEqual('info@example.com (Office)', emails_to_str([(('info@example.com', False), 'Office')])) self.assertEqual('info@example.com; home@example.com (Privat)', emails_to_str([(('info@example.com', False), None), (('home@example.com', False), 'Privat')])) class TestWikipage(unittest.TestCase): def test_from_str(self): self.assertEqual('[[Birgitzer Alm]]', wikipage_from_str('[[Birgitzer Alm]]')) with self.assertRaises(ValueError): wikipage_from_str('[[') with self.assertRaises(ValueError): wikipage_from_str('') with self.assertRaises(ValueError): wikipage_from_str('Birgitzer Alm') def test_to_str(self): self.assertEqual('[[Birgitzer Alm]]', wikipage_to_str('[[Birgitzer Alm]]')) class TestOptWikipageEnum(unittest.TestCase): def test_from_str(self): self.assertEqual(['[[Birgitzer Alm]]', '[[Kemater Alm]]'], opt_wikipage_enum_from_str('[[Birgitzer Alm]]; [[Kemater Alm]]')) self.assertEqual(['[[Birgitzer Alm]]'], opt_wikipage_enum_from_str('[[Birgitzer Alm]]')) self.assertEqual([], opt_wikipage_enum_from_str('Nein')) self.assertEqual(None, opt_wikipage_enum_from_str('')) def test_to_str(self): self.assertEqual('[[Birgitzer Alm]]; [[Kemater Alm]]', opt_wikipage_enum_to_str(['[[Birgitzer Alm]]', '[[Kemater Alm]]'])) self.assertEqual('[[Birgitzer Alm]]', opt_wikipage_enum_to_str(['[[Birgitzer Alm]]'])) self.assertEqual('Nein', opt_wikipage_enum_to_str([])) self.assertEqual('', opt_wikipage_enum_to_str(None)) class TestBox(unittest.TestCase): def test_from_str(self): value = '{{MyTemplate|apple=2|banana=5}}' converter_dict = OrderedDict([('apple', opt_uint_converter), ('banana', opt_uint_converter)]) result = wikibox_from_str(value, 'MyTemplate', converter_dict) self.assertEqual(result['apple'], 2) self.assertEqual(result['banana'], 5) value = '{{MyTemplate\n | apple = 2 \n| banana = 5 }}' result = wikibox_from_str(value, 'MyTemplate', converter_dict) self.assertEqual(result['apple'], 2) self.assertEqual(result['banana'], 5) with self.assertRaises(ValueError): wikibox_from_str(value, 'myTemplate', converter_dict) with self.assertRaises(ValueError): value = '{{MyTemplate|apple=2|banana=five}}' wikibox_from_str(value, 'MyTemplate', converter_dict) with self.assertRaises(ValueError): value = '{{MyTemplate|apple=2}}' wikibox_from_str(value, 'MyTemplate', converter_dict) with self.assertRaises(ValueError): value = '{{MyTemplate|apple=2|banana=5|cherry=6}}' wikibox_from_str(value, 'MyTemplate', converter_dict) def test_to_str(self): value = OrderedDict([('apple', 2), ('banana', 5)]) converter_dict = OrderedDict([('apple', opt_uint_converter), ('banana', opt_uint_converter)]) result = wikibox_to_str(value, 'MyTemplate', converter_dict) self.assertEqual(result, '{{MyTemplate|apple=2|banana=5}}') class TestRodelbahnbox(unittest.TestCase): def setUp(self): self.maxDiff = None self.value = \ '''{{Rodelbahnbox | Position = 46.807218 N 12.806522 E | Position oben = 46.799014 N 12.818658 E | Höhe oben = 1046 | Position unten = | Höhe unten = | Länge = 3500 | Schwierigkeit = mittel | Lawinen = kaum | 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 | Webauskunft = http://www.lienzerdolomiten.info/at/tobogorpt.html | Telefonauskunft = +43-664-2253782 (Dolomitenhütte) | Bild = Dolomitenrodelbahn Tristach 2011-12-22 oberer Bereich.jpg | In Übersichtskarte = Ja | Forumid = 139 }}''' def test_from_str(self): value = rodelbahnbox_from_str(self.value) self.assertEqual(value['Position'], LonLat(12.806522, 46.807218)) self.assertEqual(value['Position oben'], LonLat(12.818658, 46.799014)) self.assertEqual(value['Höhe oben'], 1046) self.assertEqual(value['Position unten'], LonLat(None, None)) self.assertEqual(value['Höhe unten'], None) self.assertEqual(value['Länge'], 3500) self.assertEqual(value['Schwierigkeit'], 2) self.assertEqual(value['Lawinen'], 1) self.assertEqual(value['Betreiber'], 'Bringungsgemeinschaft Kreithof-Dolomitenhütte') self.assertEqual(value['Öffentliche Anreise'], 4) self.assertEqual(value['Aufstieg möglich'], True) self.assertEqual(value['Aufstieg getrennt'], (0.5, None)) self.assertEqual(value['Gehzeit'], 75) self.assertEqual(value['Aufstiegshilfe'], [('Taxi', None), ('Sonstige', 'PKW bis Kreithof')]) self.assertEqual(value['Beleuchtungsanlage'], (1.0, None)) self.assertEqual(value['Beleuchtungstage'], (7, None)) self.assertEqual(value['Rodelverleih'], []) self.assertEqual(value['Gütesiegel'], [('Tiroler Naturrodelbahn-Gütesiegel', '2009', 'mittel')]) self.assertEqual(value['Webauskunft'], (True, 'http://www.lienzerdolomiten.info/at/tobogorpt.html')) self.assertEqual(value['Telefonauskunft'], [('+43-664-2253782', 'Dolomitenhütte')]) self.assertEqual(value['Bild'], 'Dolomitenrodelbahn Tristach 2011-12-22 oberer Bereich.jpg') self.assertEqual(value['In Übersichtskarte'], True) self.assertEqual(value['Forumid'], 139) def test_to_str(self): value = OrderedDict([ ('Position', LonLat(12.806522, 46.807218)), ('Position oben', LonLat(12.818658, 46.799014)), ('Höhe oben', 1046), ('Position unten', LonLat(None, None)), ('Höhe unten', None), ('Länge', 3500), ('Schwierigkeit', 2), ('Lawinen', 1), ('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')]), ('Webauskunft', (True, 'http://www.lienzerdolomiten.info/at/tobogorpt.html')), ('Telefonauskunft', [('+43-664-2253782', 'Dolomitenhütte')]), ('Bild', 'Dolomitenrodelbahn Tristach 2011-12-22 oberer Bereich.jpg'), ('In Übersichtskarte', True), ('Forumid', 139)]) self.assertEqual(rodelbahnbox_to_str(value), self.value) class TestWrValidators(unittest.TestCase): def test_ValueCommentListNeinLoopNone(self): v = wrpylib.wrvalidators.ValueCommentListNeinLoopNone() assert v.to_python('') == None assert v.to_python('Nein') == 'Nein' assert v.to_python('T-Mobile (gut); A1') == 'T-Mobile (gut); A1' assert v.from_python(None) == '' assert v.from_python('Nein') == 'Nein' assert v.from_python('T-Mobile (gut); A1') == 'T-Mobile (gut); A1' class TestGasthausbox(unittest.TestCase): def test_GasthausboxDictValidator(self): v = wrpylib.wrvalidators.GasthausboxDictValidator() other = collections.OrderedDict([ ('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]]')]) python = v.to_python(other, None) other2 = v.from_python(python, None) assert other == other2