import unittest import os import zipfile import time koordinate = { "Kranjska Gora": (76, 76, 65.5), "Jesenice": (108, 84, 58.0), "Radovljica": (122, 115, 49.0), "Tržič": (137, 98, 51.0), "Kranj": (146, 117, 38.4), "Škofja Loka": (138, 130, 36.2), "Kamnik": (173, 120, 43.0), "Ljubljana": (163, 149, 30.3), "Celje": (250, 119, 25.8), "Velenje": (231, 96, 40.5), "Maribor": (296, 65, 31.0), "Ptuj": (321, 88, 24.3), "Ljutomer": (359, 72, 26.0), "Murska Sobota": (353, 46, 19.6), "Lendava": (388, 61, 26.0), "Novo mesto": (237, 192, 19.1), "Črnomelj": (242, 230, 15.8), "Litija": (200, 149, 23.8), "Zidani most": (240, 142, 20.7), "Krško": (274, 164, 16.4), "Ribnica": (186, 202, 49.6), "Kočevje": (203, 220, 46.5), "Vrhnika": (136, 165, 29.7), "Postojna": (127, 158, 55.0), "Pivka": (125, 214, 41.1), "Sežana": (88, 205, 37.6), "Koper": (70, 235, 0.4), "Piran": (53, 238, 0.6) } povezave = { "Kranjska Gora": {"Jesenice"}, "Radovljica": {"Jesenice", "Tržič", "Kranj"}, "Kranj": {"Tržič", "Kamnik", "Škofja Loka"}, "Ljubljana": {"Škofja Loka", "Kamnik", "Litija", "Novo mesto", "Ribnica", "Vrhnika"}, "Zidani most": {"Litija", "Krško", "Celje"}, "Celje": {"Zidani most", "Velenje"}, "Maribor": {"Celje", "Ptuj", "Murska Sobota"}, "Ljutomer": {"Murska Sobota", "Lendava"}, "Lendava": {"Maribor"}, "Črnomelj": {"Novo mesto", "Kočevje"}, "Kočevje": {"Črnomelj", "Ribnica"}, "Postojna": {"Pivka", "Sežana", "Koper", "Vrhnika"}, "Piran": {"Koper"}, "Koper": {"Piran"}, "Spodnji Duplek": set() } class TestGovorice(unittest.TestCase): @classmethod def setUpClass(cls): base, ext = os.path.splitext(os.path.basename(__file__)) zf = zipfile.ZipFile(__file__ + ".zip", "a", zipfile.ZIP_DEFLATED) zf.write(__file__, "{}.{}{}".format(base, int(time.time()), ext)) zf.close() def test_evklid(self): self.assertEqual(evklid([10, -4], [13, 0]), 5) self.assertEqual(evklid([10, 4], [13, 0]), 5) self.assertEqual(evklid([10, -4], [13, -8]), 5) self.assertEqual(evklid([10, 4], [13, 8]), 5) self.assertEqual(evklid([10], [5]), 5) self.assertEqual(evklid([5], [10]), 5) self.assertEqual(evklid([1] * 81, [0] * 81), 9) def test_razdalja(self): self.assertAlmostEqual(razdalja("Celje", "Velenje"), 33.25793138485916) self.assertAlmostEqual(razdalja("Velenje", "Celje"), 33.25793138485916) self.assertAlmostEqual(razdalja("Maribor", "Koper"), 284.45097995964085) def test_naklon(self): self.assertAlmostEqual(naklon("Škofja Loka", "Ljubljana"), -0.18572881002345853) self.assertAlmostEqual(naklon("Ljubljana", "Škofja Loka"), 0.18572881002345853) self.assertAlmostEqual(naklon("Lendava", "Tržič"), 0.09821968572427645) def test_dolzina_poti(self): self.assertAlmostEqual(dolzina_poti(["Kamnik", "Kranj", "Koper", "Kočevje"]), 314.522540768372) self.assertAlmostEqual(dolzina_poti(list(reversed(["Kamnik", "Kranj", "Koper", "Kočevje"]))), 314.522540768372) self.assertAlmostEqual(dolzina_poti(["Kamnik", "Kranj"]), 27.55285829092873) self.assertAlmostEqual(dolzina_poti(["Kamnik"]), 0) def test_izbira(self): self.assertEqual(izbira("Ljubljana"), "Litija") self.assertEqual(izbira("Kranjska Gora"), "Jesenice") self.assertEqual(izbira("Piran"), "Koper") self.assertEqual(izbira("Koper"), None) self.assertEqual(izbira("Radovljica"), "Kranj") self.assertEqual(izbira("Celje"), "Zidani most") def test_dopolni(self): pov = dopolni(povezave) print(pov) self.assertEqual(pov["Jesenice"], {"Radovljica", "Kranjska Gora"}) self.assertEqual(pov["Ljubljana"], {'Škofja Loka', 'Ribnica', 'Kamnik', 'Vrhnika', 'Novo mesto', 'Litija'}) self.assertEqual(pov["Koper"], {'Piran', "Postojna"}) self.assertEqual(pov["Piran"], {'Koper'}) self.assertEqual(pov["Pivka"], {'Postojna'}) def test_pot(self): import copy global povezave pov_bak = copy.deepcopy(povezave) try: povezave = dopolni(povezave) self.assertEqual(pot("Ljubljana"), ['Ljubljana', 'Litija', 'Zidani most', 'Krško']) self.assertEqual(pot("Vrhnika"), ['Vrhnika']) self.assertEqual(pot("Postojna"), ['Postojna', 'Vrhnika']) self.assertEqual(pot("Maribor"), ['Maribor', 'Ptuj']) self.assertEqual(pot("Kranjska Gora"), ['Kranjska Gora', 'Jesenice', 'Radovljica', 'Kranj', 'Škofja Loka', 'Ljubljana', 'Litija', 'Zidani most', 'Krško']) finally: povezave = pov_bak def test_kam(self): import copy global povezave pov_bak = copy.deepcopy(povezave) try: povezave = dopolni(povezave) self.assertEqual(kam("Ljubljana"), 'Krško') self.assertEqual(kam("Vrhnika"), 'Vrhnika') self.assertEqual(kam("Postojna"), 'Vrhnika') self.assertEqual(kam("Maribor"), 'Ptuj') self.assertEqual(kam("Kranjska Gora"), 'Krško') finally: povezave = pov_bak def test_od_kod(self): import copy global povezave pov_bak = copy.deepcopy(povezave) try: povezave = dopolni(povezave) self.assertEqual( od_kod(), {'Krško': {'Radovljica', 'Litija', 'Tržič', 'Celje', 'Velenje', 'Zidani most', 'Kranj', 'Krško', 'Kamnik', 'Jesenice', 'Ljubljana', 'Ribnica', 'Kranjska Gora', 'Škofja Loka'}, 'Sežana': {'Sežana'}, 'Koper': {'Koper', 'Piran'}, 'Vrhnika': {'Postojna', 'Vrhnika'}, 'Murska Sobota': {'Murska Sobota', 'Ljutomer'}, 'Črnomelj': {'Novo mesto', 'Kočevje', 'Črnomelj'}, 'Lendava': {'Lendava'}, 'Pivka': {'Pivka'}, 'Ptuj': {'Maribor', 'Ptuj'}}) finally: povezave = pov_bak