An error occurred while loading the file. Please try again.
test_zipcode.py 2.30 KiB
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()