def vse_podmnozice(s): from itertools import combinations, chain return list(chain(*(map(set, combinations(tuple(s), k)) for k in range(1 + len(s))))) import unittest class Test01NajvecGlasov(unittest.TestCase): def test_najvec_glasov(self): self.assertEqual( najvec_glasov({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Bled"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}), "Bled") self.assertEqual(najvec_glasov({"Cilka": ["Ajdovščina"]}), "Ajdovščina") class Test02NajvecGlasovM(unittest.TestCase): def test_najvecji_kljuci(self): self.assertEqual(najvecji_kljuci({1: 15, 2: 42, 5: 0}), {2}) self.assertEqual(najvecji_kljuci({1: 15, 2: 42, 5: 0, 7: 42}), {2, 7}) self.assertEqual(najvecji_kljuci({1: 15}), {1}) self.assertEqual(najvecji_kljuci({}), set()) self.assertEqual(najvecji_kljuci({"Ana": 15, "Berta": 42, "Cilka": 0}), {"Berta"}) self.assertEqual(najvecji_kljuci({"Ana": 42, "Berta": 15, "Cilka": 42, "Dani": 7}), {"Ana", "Cilka"}) def test_najvec_glasov(self): self.assertEqual( najvec_glasov_m({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Bled"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}), {"Bled"}) self.assertEqual(najvec_glasov_m({"Cilka": ["Ajdovščina"]}), {"Ajdovščina"}) self.assertEqual( najvec_glasov_m({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Bled", "Ajdovščina"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}), {"Bled", "Ajdovščina"}) self.assertEqual( najvec_glasov_m({"Ana": ["Bled", "Bohinj", "Radovljica"]}), {"Bled", "Bohinj", "Radovljica"}) self.assertEqual(najvec_glasov_m({}), set()) class Test03VsiSrecni(unittest.TestCase): def test_kdo_srecen(self): self.assertEqual(kdo_srecen({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Ajdovščina"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}, {"Radovljica", "Bled"}), {"Ana", "Berta", "Dani"}) self.assertEqual(kdo_srecen({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Ajdovščina"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}, {"Radovljica", "Bled", "Vrhnika"}), {"Ana", "Berta","Dani"}) self.assertEqual(kdo_srecen({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Ajdovščina"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}, {"Radovljica"}), {"Ana", "Berta"}) self.assertEqual(kdo_srecen({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Ajdovščina"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}, {"Vrhnika"}), set()) self.assertEqual(kdo_srecen({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Ajdovščina"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}, set()), set()) self.assertEqual(kdo_srecen({"Ana": ["Bled", "Bohinj", "Radovljica"], "Berta": ["Radovljica", "Ajdovščina"], "Cilka": ["Ajdovščina"], "Dani": ["Bled", "Ajdovščina"]}, {"Bled", "Ajdovščina"}), {"Ana", "Berta", "Cilka", "Dani"}) def test_vsi_srecni(self): self.assertEqual(vsi_srecni({"Ana": ["Bled", "Bohinj"], "Berta": ["Radovljica", "Bohinj", "Ajdovščina"], "Cilka": ["Ajdovščina", "Vrhnika"], "Dani": ["Bled", "Ajdovščina"], "Ema": ["Bled", "Kranj"]}), {"Bled", "Ajdovščina"}) self.assertEqual(vsi_srecni({"Ana": ["Anograd"], "Berta": ["Bertograd"], "Cilka": ["Cilkograd"], "Dani": ["Danigrad"]}), {"Anograd", "Bertograd", "Cilkograd", "Danigrad"}) self.assertEqual(vsi_srecni({"Ana": ["Bled", "Bohinj", "Ajdovščina", "Radovljica"], "Berta": ["Radovljica", "Ajdovščina"], "Cilka": ["Ajdovščina", "Vrhnika"], "Dani": ["Bled", "Ajdovščina"]}), {"Ajdovščina"}) class Test04SkritiKraj(unittest.TestCase): def test_skriti_kraj(self): self.assertEqual(skriti_kraj("0", "Bled"), 4) self.assertEqual(skriti_kraj("0", "Bohinj"), 2) self.assertEqual(skriti_kraj("0", "Radovljica"), 0) self.assertEqual(skriti_kraj("0/278", "Bled"), 2) self.assertEqual(skriti_kraj("0/100", "Bled"), 0) self.assertEqual(skriti_kraj("0/100/816", "Bled"), 0) class Test05Glasovalec(unittest.TestCase): def test_glasuj(self): g = Glasovalec() self.assertEqual(g.glasovnica(), []) g.glasuj("Kranj") self.assertEqual(g.glasovnica(), ["Kranj"]) g.glasuj("Brežice") self.assertEqual(sorted(g.glasovnica()), sorted(["Kranj", "Brežice"])) g.glasuj("Vrhnika") self.assertEqual(sorted(g.glasovnica()), sorted(["Kranj", "Brežice", "Vrhnika"])) g.glasuj("Logatec") self.assertEqual(sorted(g.glasovnica()), sorted(["Brežice", "Vrhnika", "Logatec"])) g.glasuj("Brežice") self.assertEqual(sorted(g.glasovnica()), sorted(["Vrhnika", "Logatec", "Brežice"])) g.glasuj("Logatec") self.assertEqual(sorted(g.glasovnica()), sorted(["Logatec", "Brežice", "Logatec"])) def test_preklici(self): g = Glasovalec() g.glasuj("a") g.glasuj("b") g.glasuj("c") g.preklici("b") g.glasuj("d") self.assertEqual(g.glasovnica(), ["a", "c", "d"]) if __name__ == "__main__": unittest.main()