diff --git a/requirements.txt b/requirements.txt index 0083c46082253b8bbfd6c6aec277a33c140c8dcc..68423364274185ae1b7f5bea10f7c75f840a1031 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ pyproj requests pyperclip tqdm +shapely diff --git a/test_zipcode.py b/test_zipcode.py index 976685699fdf00b4074c9671f97b633c256ea100..189ee2f82b65b09b3771a44de934b99f0d66dd0e 100644 --- a/test_zipcode.py +++ b/test_zipcode.py @@ -1,11 +1,53 @@ import unittest +import pyperclip from get_coordinates_by_zipcode import get_coordinates_by_zipcode class TestGetCoordinates(unittest.TestCase): - def test_get_mohringen(self): + def test_get_single_plz(self): coords = get_coordinates_by_zipcode(['70567']) + self.assertTrue(coords.startswith('POLYGON ((9.')) + self.assertTrue(' 48.7' in coords) + self.assertTrue(' 9.15' in coords) + + def test_get_multiple_plz(self): + # Multiple PLZs + coords = get_coordinates_by_zipcode(['70567', '70569']) + self.assertTrue(coords.startswith('POLYGON ((9.')) + self.assertTrue(' 48.7' in coords) + self.assertTrue(' 9.15' in coords) + + def test_get_multiple_disjoint_plz(self): + # Multiple PLZs, separate + coords = get_coordinates_by_zipcode(['70567', '10178']) + self.assertTrue(coords.startswith('MULTIPOLYGON (((')) + self.assertTrue(' 48.7' in coords) + self.assertTrue(' 9.15' in coords) + self.assertTrue(' 52.5' in coords) + self.assertTrue(' 13.4' in coords) + + def test_get_plz_with_hole(self): + # 70469 missing in the middle + coords = get_coordinates_by_zipcode(['70469', '70193', + '70176', '70174', '70191']) + self.assertTrue(coords.startswith('POLYGON ((9')) + self.assertTrue('), (' in coords) + + def test_get_coords_in_clipboard(self): + pyperclip.copy("") + self.assertEquals(pyperclip.paste(), "") + get_coordinates_by_zipcode(['70567']) + coords = pyperclip.paste() + self.assertTrue(coords.startswith('POLYGON ((9.')) + self.assertTrue(' 48.7' in coords) + self.assertTrue(' 9.15' in coords) + + def test_get_unknown_plz(self): + # Incorrect PLZ + self.assertRaisesRegex(AttributeError, "no information could be found", + get_coordinates_by_zipcode, ['1234567'] + ) if __name__ == '__main__':