diff --git a/SL_2/s2_a4_a.py b/SL_2/s2_a4_a.py new file mode 100644 index 0000000..7ead30f --- /dev/null +++ b/SL_2/s2_a4_a.py @@ -0,0 +1,16 @@ +import re + + +def normalize_number(phone_number): + pattern = re.compile("([\+]*[1][ -])*(\(*[2-9][0-9][0-9]\)*)[- .]([0-9][0-9][0-9])[ -.]([2-9][0-8][0-9][0-9])") + + if not pattern.match(phone_number): + raise ValueError("Ungültige Telefonnummer") + + normalized_number = re.sub("\+*\(*\)*", "", phone_number) + normalized_number = re.sub("[ .]", "-", normalized_number) + + if normalized_number[0] != str(1): + normalized_number = "1-" + normalized_number + + return normalized_number diff --git a/SL_2/s2_a4_b.py b/SL_2/s2_a4_b.py new file mode 100644 index 0000000..2f3a082 --- /dev/null +++ b/SL_2/s2_a4_b.py @@ -0,0 +1,33 @@ +import unittest +from s2_a4_a import normalize_number + + +class TestPhoneNumber(unittest.TestCase): + test_correct_numbers = [ + "+1 223-456-7890", + "1-223-456-7890", + "+1 223 456-7890", + "(223) 456-7890", + "1 223 456 7890", + "223.456.7890", + "1-989-111-2222" + ] + + test_wrong_numbers = [ + "+1 123-234-3333", + "1 222-333-1111", + "222-333-9999", + "22-333-4444" + ] + + def test_given_numbers_correct(self): + for numbers in self.test_correct_numbers[:-1]: + self.assertEqual("1-223-456-7890", normalize_number(numbers)) + self.assertEqual("1-989-111-2222", normalize_number("1-989-111-2222")) + + def test_number_exception(self): + for numbers in self.test_wrong_numbers: + with self.assertRaises(ValueError) as context: + normalize_number(numbers) + + self.assertTrue('This is broken' in context.exception)