import unittest class Obvezna(unittest.TestCase): def test_skupine(self): obiski = [("Ana", "kava"), ("Berta", "kava"), ("Cilka", "telovadba"), ("Dani", "zdravnik"), ("Ana", "zdravnik"), ("Cilka", "kava"), ("Ema", "telovadba")] def form(s): return sorted(s, key=lambda x: "-".join(sorted(x))) self.assertEqual( form([{"Ana", "Berta", "Cilka"}, {"Dani", "Ana"}, {"Cilka", "Ema"}]), form(skupine(obiski))) 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"})) def test_idealni_nosilec(self): self.assertEqual( "Ana", zlati_prinasalec([{"Ana", "Berta", "Cilka"}, {"Dani", "Ana"}, {"Cilka", "Ema"}, {"Cilka"}])) self.assertEqual( "Cilka", zlati_prinasalec([{"Fanči", "Berta", "Cilka"}, {"Dani", "Fanči"}, {"Cilka", "Ema"}, {"Cilka"}])) self.assertEqual( "Cilka", zlati_prinasalec([{"Fanči", "Berta", "Cilka"}, {"Dani", "Fanči"}, {"Cilka", "Ema"}, {"Fanči"}])) class Dodatna(unittest.TestCase): def test_korakov_do_vseh(self): skupine = [{"Cilka", "Ema", "Jana", "Saša"}, {"Ema"}, {"Fanči", "Greta", "Saša"}, {"Greta", "Nina"}, {"Greta", "Olga", "Rebeka"}, {"Micka", "Ana", "Klara"}, {"Fanči", "Iva", "Berta", "Špela"}, {"Klara", "Cilka", "Dani"}, {"Petra", "Dani", "Lara", "Špela"}] self.assertEqual(5, korakov_do_vseh(skupine, "Ana")) self.assertEqual(4, korakov_do_vseh(skupine, "Klara")) self.assertEqual(4, korakov_do_vseh(skupine, "Dani")) self.assertEqual(3, korakov_do_vseh(skupine, "Ema")) skupine.append({"Tina"}) self.assertIsNone(korakov_do_vseh(skupine, "Ema")) self.assertIsNone(korakov_do_vseh(skupine, "Tina")) skupine[-1].add("Urša") skupine[-1].add("Vesna") skupine.append({"Zala", "Žana"}) self.assertIsNone(korakov_do_vseh(skupine, "Ema")) self.assertIsNone(korakov_do_vseh(skupine, "Tina")) if __name__ == "__main__": unittest.main()