from tempfile import NamedTemporaryFile import warnings import os import unittest class Test(unittest.TestCase): def setUp(self): self.obiski = [ ("Ana", "kava"), ("Berta", "kava"), ("Cilka", "telovadba"), ("Dani", "zdravnik"), ("Ana", "zdravnik"), ("Cilka", "kava"), ("Ema", "telovadba")] warnings.simplefilter("ignore", ResourceWarning) class T1Obvezna(Test): def test_aktivnosti(self): self.assertEqual({"kava", "telovadba", "zdravnik"}, aktivnosti(self.obiski)) def test_aktivnosti_osebe(self): self.assertEqual(["kava", "zdravnik"], aktivnosti_osebe("Ana", self.obiski)) obiski = self.obiski + [("Ana", "kava")] self.assertEqual(["kava", "zdravnik", "kava"], aktivnosti_osebe("Ana", obiski)) self.assertEqual(["telovadba", "kava"], aktivnosti_osebe("Cilka", self.obiski)) def test_kdo_tam(self): self.assertEqual({"Ana", "Berta", "Cilka"}, kdo_tam("kava", self.obiski)) self.assertEqual({"Ema", "Cilka"}, kdo_tam("telovadba", self.obiski)) def test_koliko_tam(self): self.assertEqual(3, koliko_tam("kava", self.obiski)) self.assertEqual(2, koliko_tam("telovadba", self.obiski)) class T2Dodatna(Test): def test_beri_aktivnosti(self): with NamedTemporaryFile("wt", delete=False) as f: try: for kdo, kje in self.obiski: f.write(f"{kdo} {kje}\n") f.close() self.assertEqual(self.obiski, preberi_aktivnosti(f.name)) finally: os.remove(f.name) def test_slovar_skupin(self): self.assertEqual( {"kava": {"Ana", "Berta", "Cilka"}, "zdravnik": {"Dani", "Ana"}, "telovadba": {"Cilka", "Ema"}}, slovar_skupin(self.obiski)) self.assertEqual( {"kava": {"Ana", "Berta"}}, slovar_skupin([("Ana", "kava"), ("Berta", "kava")])) def test_skupine(self): def form(s): return sorted(s, key=lambda x: "-".join(sorted(x))) self.assertEqual( form([{"Ana", "Berta", "Cilka"}, {"Dani", "Ana"}, {"Cilka", "Ema"}]), form(skupine(self.obiski))) def test_okuzen(self): self.assertTrue(okuzen(["miza", "kljuka", "stol", "milo", "kljuka", "milo"])) self.assertTrue(okuzen(["miza", "kljuka", "milo", "milo", "kljuka", "kozarec"])) self.assertFalse(okuzen(["miza", "kljuka", "milo", "milo", "kljuka", "milo"])) self.assertFalse(okuzen(["miza", "kljuka", "milo", "milo", "kljuka"])) class T3BoljDodatna(Test): def test_okuzeni(self): skupine = [{"Ana", "Berta", "Cilka"}, {"Dani", "Ana"}, {"Cilka", "Ema"}, {"Fanči"}] self.assertEqual({"Ana", "Berta", "Cilka", "Dani"}, okuzeni(skupine, {"Ana"})) self.assertEqual({"Ana", "Berta", "Cilka", "Ema"}, okuzeni(skupine, {"Cilka"})) self.assertEqual({"Ana", "Cilka", "Dani", "Ema"}, okuzeni(skupine, {"Ema", "Dani"})) self.assertEqual({"Ana", "Berta", "Cilka", "Dani", "Ema"}, okuzeni(skupine, {"Ana", "Ema"})) self.assertEqual({"Cilka", "Ema"}, okuzeni(skupine, {"Ema"})) self.assertEqual({"Fanči"}, okuzeni(skupine, {"Fanči"})) if __name__ == "__main__": unittest.main()