import unittest class Robot: def __init__(self): self.x = self.y = 0 self.smer = 1 def desno(self): self.smer = (self.smer + 1) % 4 def levo(self): self.smer = (self.smer - 1) % 4 def naprej(self, d): if self.smer == 0: self.y += d elif self.smer == 1: self.x += d elif self.smer == 2: self.y -= d else: self.x -= d def koordinate(self): return self.x, self.y def razdalja(self): return abs(self.x) + abs(self.y) class Test01Migracije(unittest.TestCase): def test_migracije(self): import os from random import randint fn = "m".format(randint(10000, 99999)) try: with open(fn, "wt") as f: f.write("""8: Maribor -> Ljubljana 3: Maribor -> Nova Gorica 10: Ljubljana -> Maribor 5: Koper -> Nova Gorica 3: Novo mesto -> Nova Gorica """) self.assertEqual(migracije(fn), ("Maribor", "Nova Gorica")) with open(fn, "wt") as f: f.write("""8: Mb -> Lj 3: Mb -> Ng 12: Lj -> Mb 5: Kp -> Ng 3: Nm -> Ng""") self.assertEqual(migracije(fn), ("Lj", "Mb")) with open(fn, "wt") as f: f.write("""8: Mb -> Lj 3: Mb -> Ng""") self.assertEqual(migracije(fn), ("Mb", "Lj")) with open(fn, "wt") as f: f.write("""8: Mb -> Lj 9: Ng -> Lj""") self.assertEqual(migracije(fn), ("Ng", "Lj")) with open(fn, "wt") as f: f.write("""11: Maribor -> Lj 5: Lj -> Celje 9: Ng -> Celje""") self.assertEqual(migracije(fn), ("Maribor", "Celje")) finally: os.remove(fn) class Test02Zakladi(unittest.TestCase): def test_zakladi(self): self.assertEqual(zakladi(""), 1) self.assertEqual(zakladi("L"), 1) self.assertEqual(zakladi("LLL"), 1) self.assertEqual(zakladi("7"), 2) self.assertEqual(zakladi("77"), 3) self.assertEqual(zakladi("733"), 2) self.assertEqual(zakladi("7331"), 3) self.assertEqual(zakladi("7D32"), 2) self.assertEqual(zakladi("7D322"), 3) self.assertEqual(zakladi("7D3221LL"), 3) self.assertEqual(zakladi("7D322LL7"), 3) self.assertEqual(zakladi("7D322LL77"), 4) self.assertEqual(zakladi("7D331"), 3) self.assertEqual(zakladi("7D33D1"), 2) self.assertEqual(zakladi("7LLL77LLL"), 4) class Test03Roboti(unittest.TestCase): def test_roboti(self): self.assertEqual(roboti("V", 1), [(1, 0)]) self.assertEqual(roboti("Z", 1), [(-1, 0)]) self.assertEqual(roboti("S", 1), [(0, 1)]) self.assertEqual(roboti("J", 1), [(0, -1)]) self.assertEqual(roboti("VZVZ", 2), [(2, 0), (-2, 0)]) self.assertEqual(roboti("VZVZV", 2), [(3, 0), (-2, 0)]) self.assertEqual(roboti("SJVZSJVZSJVZ", 4), [(0, 3), (0, -3), (3, 0), (-3, 0)]) self.assertEqual(roboti("SJVZSJVZSJVZ", 12), 3 * [(0, 1), (0, -1), (1, 0), (-1, 0)]) self.assertEqual(roboti("S", 3), [(0, 1), (0, 0), (0, 0)]) self.assertEqual(roboti("", 300), 300 * [(0, 0)]) self.assertEqual(roboti("SJ" * 100, 200), 100 * [(0, 1), (0, -1)]) class Test04BrezPonavljanja(unittest.TestCase): def test_brez_ponavljanja(self): self.assertEqual(brez_ponavljanja([3, 1, 1, 4, 2]), [3, 1, 4, 2]) self.assertEqual(brez_ponavljanja([3, 1, 1, 4, 2, 1]), [3, 1, 4, 2, 1]) self.assertEqual(brez_ponavljanja([3, 1, 1, 4, 4, 15, 4, 2, 1]), [3, 1, 4, 15, 4, 2, 1]) self.assertEqual(brez_ponavljanja([3, 42, 42]), [3, 42]) self.assertEqual(brez_ponavljanja([42, 42, 3]), [42, 3]) self.assertEqual(brez_ponavljanja([42, 42]), [42]) self.assertEqual(brez_ponavljanja([42]), [42]) self.assertEqual(brez_ponavljanja([]), []) class Test05Carovnik(unittest.TestCase): def test_carovnik(self): alkemist = Carovnik("svinec -> zlato", 10) piroman = Carovnik("les -> pepel", 2) feniks = Carovnik("pepel -> svinec", 4) stvari = ["svinec", "svinec", "les", "zlato", "svinec"] self.assertEqual(alkemist.zasluzek(), 0) self.assertEqual(piroman.zasluzek(), 0) self.assertEqual(feniks.zasluzek(), 0) stvari = feniks.caraj(stvari) self.assertEqual(stvari, ["svinec", "svinec", "les", "zlato", "svinec"]) self.assertEqual(alkemist.zasluzek(), 0) self.assertEqual(piroman.zasluzek(), 0) self.assertEqual(feniks.zasluzek(), 0) stvari = alkemist.caraj(stvari) self.assertEqual(stvari, ["zlato", "zlato", "les", "zlato", "zlato"]) self.assertEqual(alkemist.zasluzek(), 30) self.assertEqual(piroman.zasluzek(), 0) self.assertEqual(feniks.zasluzek(), 0) stvari = piroman.caraj(stvari) self.assertEqual(stvari, ["zlato", "zlato", "pepel", "zlato", "zlato"]) self.assertEqual(alkemist.zasluzek(), 30) self.assertEqual(piroman.zasluzek(), 2) self.assertEqual(feniks.zasluzek(), 0) stvari = piroman.caraj(stvari) self.assertEqual(stvari, ["zlato", "zlato", "pepel", "zlato", "zlato"]) self.assertEqual(alkemist.zasluzek(), 30) self.assertEqual(piroman.zasluzek(), 2) self.assertEqual(feniks.zasluzek(), 0) stvari = feniks.caraj(stvari) self.assertEqual(stvari, ["zlato", "zlato", "svinec", "zlato", "zlato"]) self.assertEqual(alkemist.zasluzek(), 30) self.assertEqual(piroman.zasluzek(), 2) self.assertEqual(feniks.zasluzek(), 4) stvari = alkemist.caraj(stvari) self.assertEqual(stvari, ["zlato", "zlato", "zlato", "zlato", "zlato"]) self.assertEqual(alkemist.zasluzek(), 40) self.assertEqual(piroman.zasluzek(), 2) self.assertEqual(feniks.zasluzek(), 4) druge = ["pepel", "pepel", "svinec", "zlato"] druge = feniks.caraj(druge) self.assertEqual(druge, ["svinec", "svinec", "svinec", "zlato"]) self.assertEqual(alkemist.zasluzek(), 40) self.assertEqual(piroman.zasluzek(), 2) self.assertEqual(feniks.zasluzek(), 12) nic = [] nic = feniks.caraj(nic) self.assertEqual(nic, []) self.assertEqual(alkemist.zasluzek(), 40) self.assertEqual(piroman.zasluzek(), 2) self.assertEqual(feniks.zasluzek(), 12) if __name__ == "__main__": unittest.main()