from .naloga import * 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", } mali_zemljevid = {(A, B): "robnik bolt", (A, C): "bolt rodeo pešci", (C, D): ""} import unittest import ast class TestObvezna(unittest.TestCase): def test_1_dvosmerni_zemljevid(self): kopija = mali_zemljevid.copy() self.assertEqual( { ("A", "B"): {"robnik", "bolt"}, ("B", "A"): {"robnik", "bolt"}, ("A", "C"): {"bolt", "rodeo", "pešci"}, ("C", "A"): {"bolt", "rodeo", "pešci"}, ("C", "D"): set(), ("D", "C"): set(), }, dvosmerni_zemljevid(mali_zemljevid), ) self.assertEqual( mali_zemljevid, kopija, "Ne spreminjaj zemljevida, temveč sestavi novega!" ) def test_2_mozna_pot(self): self.assertTrue(mozna_pot("ACD", mali_zemljevid)) self.assertTrue(mozna_pot("ABACD", mali_zemljevid)) self.assertTrue(mozna_pot("AB", mali_zemljevid)) self.assertFalse(mozna_pot("ABD", mali_zemljevid)) self.assertTrue(mozna_pot("ABCRVRIEIPNM", zemljevid)) self.assertTrue(mozna_pot("HJKMLJH", zemljevid)) self.assertFalse(mozna_pot("AC", zemljevid)) self.assertFalse(mozna_pot("ABCRVRIEPNM", zemljevid)) self.assertTrue(mozna_pot("A", zemljevid)) def test_3_potrebne_vescine(self): self.assertEqual( {"pešci", "bolt", "rodeo"}, potrebne_vescine("AC", mali_zemljevid) ) self.assertEqual( {"pešci", "bolt", "rodeo"}, potrebne_vescine("ACD", mali_zemljevid) ) self.assertEqual( {"pešci", "robnik", "bolt", "rodeo"}, potrebne_vescine("ABACD", mali_zemljevid), ) self.assertEqual( {"robnik", "stopnice", "gravel", "trava"}, potrebne_vescine("RIPSTUT", zemljevid), ) self.assertEqual( {"pešci", "trava", "lonci", "bolt", "stopnice", "gravel"}, potrebne_vescine("ABCRVR", zemljevid), ) self.assertEqual( { "pešci", "trava", "robnik", "lonci", "bolt", "stopnice", "rodeo", "gravel", }, potrebne_vescine("ABCRVRIEIPNM", zemljevid), ) self.assertEqual( {"pešci", "robnik", "bolt", "stopnice", "gravel"}, potrebne_vescine("HJKMLJH", zemljevid), ) self.assertEqual(set(), potrebne_vescine("BVBVBVB", zemljevid)) def test_4_nepotrebne_vescine(self): vescine = {"pešci", "robnik", "stopnice", "gravel", "bolt", "rodeo"} kopija = vescine.copy() self.assertEqual( {"stopnice", "gravel"}, nepotrebne_vescine("ABACD", mali_zemljevid, vescine) ) self.assertEqual( vescine, kopija, "Se mi prav zdi, da je funkcija nepotrebne_vescine spremenila " "vrednost svojega argumenta `vescine`? Fail, fail!", ) vescine = {"stopnice", "gravel", "bolt", "rodeo"} self.assertEqual( {"stopnice", "bolt"}, nepotrebne_vescine("IPNMNPO", zemljevid, vescine) ) vescine = {"gravel", "rodeo"} self.assertEqual(set(), nepotrebne_vescine("IPNMNPO", zemljevid, vescine)) def test_5_tocke_vescine(self): self.assertEqual("GIM", tocke_vescine(zemljevid, "avtocesta")) self.assertEqual("HIJLMRSTUV", tocke_vescine(zemljevid, "robnik")) self.assertEqual("MN", tocke_vescine(zemljevid, "rodeo")) self.assertEqual("ABIJLNOPTU", tocke_vescine(zemljevid, "gravel")) class TestDodatna(unittest.TestCase): def test_1_koncna_tocka(self): vescine = {"pešci", "robnik", "bolt", "stopnice", "gravel"} self.assertEqual( ("H", {"črepinje"}), koncna_tocka("HJKMLJHGFD", zemljevid, vescine) ) self.assertEqual(("M", {"rodeo"}), koncna_tocka("HJKMNPIG", zemljevid, vescine)) self.assertEqual( ("B", {"lonci", "bolt"}), koncna_tocka("ABCRVB", zemljevid, {"gravel", "trava"}), ) if "__main__" == __name__: unittest.main()