161 lines
5.0 KiB
Python
161 lines
5.0 KiB
Python
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()
|