import unittest A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, R, S, T, U, V = "ABCDEFGHIJKLMNOPRSTUV" zemljevid = { (A, B): "gravel trava", (A, V): "pešci lonci", (B, C): "bolt lonci", (B, V): "", (C, R): "stopnice pešci lonci", (D, F): "stopnice pešci", (D, R): "pešci", (E, I): "trava lonci", (F, G): "trava črepinje", (G, H): "črepinje pešci", (G, I): "avtocesta", (H, J): "robnik bolt", (I, M): "avtocesta", (I, P): "gravel", (I, R): "stopnice robnik", (J, K): "", (J, L): "gravel bolt", (K, M): "stopnice bolt", (L, M): "robnik pešci", (M, N): "rodeo", (N, P): "gravel", (O, P): "gravel", (P, S): "", (R, U): "trava pešci", (R, V): "pešci lonci", (S, T): "robnik trava", (T, U): "gravel trava", (U, V): "robnik lonci trava" } zemljevid = {k: set(v.split()) for k, v in zemljevid.items()} zemljevid.update({k[::-1]: v for k, v in zemljevid.items()}) class Test(unittest.TestCase): casi = dict(robnik=2, pešci=65, bolt=30, avtocesta=1, črepinje=30, stopnice=10, lonci=15, gravel=25, trava=70, rodeo=25) def test_1a_razberi_cas(self): self.assertEqual(5, razberi_cas("5 s")) self.assertEqual(360, razberi_cas("6 m")) self.assertEqual(365, razberi_cas("6 m 5 s")) self.assertEqual(365.012, razberi_cas("6 m 5 s 12 ms")) self.assertEqual(3600 + 365.012, razberi_cas("1 h 6 m 5 s 12 ms")) self.assertEqual(2 * 3600 * 24 + 3600 + 365.012, razberi_cas("2 d 1 h 6 m 5 s 12 ms")) self.assertEqual(2 * 3600 * 24 + 0.012, razberi_cas("2 d 12 ms")) def test_1b_preberi_case(self): with open("vescine.txt", "wt", encoding="utf-8") as f: f.write("""robnik: 2 s pešci: 1 m 5 s bolt: 30 s avtocesta: 1 s črepinje: 30 s stopnice: 10 s lonci: 15 s gravel: 25 s trava: 1 m 10 s rodeo: 25 s """) self.assertEqual(self.casi, preberi_case("vescine.txt")) def test_2_trajanje_poti(self): self.assertEqual(30 + 80, trajanje_poti("AV", zemljevid, self.casi)) self.assertEqual(30 + 80 + 30 + 0, trajanje_poti("AVB", zemljevid, self.casi)) self.assertEqual(30 + 80 + 30 + 0 + 30 + 45, trajanje_poti("AVBC", zemljevid, self.casi)) self.assertEqual(722, trajanje_poti("AVURDFG", zemljevid, self.casi)) self.assertEqual(30 + 95 + 30 + 135, trajanje_poti("TUR", zemljevid, self.casi)) def test_3_najzamudnejsa(self): self.assertEqual("pešci", najzamudnejsa("AV", zemljevid, self.casi)) self.assertEqual("pešci", najzamudnejsa("AVURDFG", zemljevid, self.casi)) self.assertEqual("trava", najzamudnejsa("VUTS", zemljevid, self.casi)) def test_4_dosegljivo(self): self.assertEqual({A}, dosegljivo("A", 60, zemljevid, self.casi)) self.assertEqual({A, B, C, V}, dosegljivo("A", 200, zemljevid, self.casi)) self.assertEqual(set("VGAUBRCIM"), dosegljivo("A", 300, zemljevid, self.casi)) def test_5_kolesar(self): benjamin = Kolesar(self.casi.copy()) self.assertEqual(125, benjamin.cas({"pešci", "bolt"})) self.assertEqual(722, benjamin.cas_pot("AVURDFG", zemljevid)) self.assertEqual(125, benjamin.cas({"pešci", "bolt"})) self.assertEqual(722, benjamin.cas_pot("AVURDFG", zemljevid)) cilka = UceciSeKolesar(self.casi.copy()) self.assertEqual(125, cilka.cas({"pešci", "bolt"})) self.assertAlmostEqual(115.5, cilka.cas({"pešci", "bolt"})) self.assertAlmostEqual(82.65, cilka.cas({"pešci"})) self.assertAlmostEqual(101.685, cilka.cas({"pešci", "bolt"})) self.assertEqual(125, benjamin.cas({"pešci", "bolt"})) self.assertEqual(722, benjamin.cas_pot("AVURDFG", zemljevid)) self.assertAlmostEqual(586.8613135, cilka.cas_pot("AVURDFG", zemljevid)) self.assertAlmostEqual(475.40078778735005, cilka.cas_pot("AVURDFG", zemljevid)) if __name__ == "__main__": unittest.main()