import unittest import pyperclip from get_coordinates_by_zipcode import get_coordinates_by_zipcode class TestGetCoordinates(unittest.TestCase): 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) # Should be detailed enough self.assertTrue(len(coords.split(',')) > 100) def test_get_single_plz_with_coarser_coordinates(self): coords = get_coordinates_by_zipcode(['70567'], precision=1000) self.assertTrue(coords.startswith('POLYGON ((9.')) # Should be not detailed at all self.assertTrue(len(coords.split(',')) < 10) 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.assertEqual(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__': unittest.main()