import unittest class TestIgnoranti(unittest.TestCase): def test_ignoranti(self): self.assertEqual(ignoranti({"Ana": {"Berta"}}), {"Berta": {"Ana"}}) self.assertEqual(ignoranti( {"Ana": {"Berta", "Cilka", "Dani"}, "Berta": {"Ana", "Cilka"}, "Cilka": {"Dani"}, "Dani": {"Ana", "Ema"}, "Ema": set(), "Fanči": set()}), {"Cilka": {"Ana", "Berta"}, "Dani": {"Cilka"}, "Ema": {"Dani"}}) self.assertEqual(ignoranti({"Ana": set()}), {}) self.assertEqual(ignoranti({}), {}) class TestSudoku(unittest.TestCase): plosca = ["51...2..6", ".9....7..", ".4...5.8.", "......9..", "....3....", "..8.....4", "......4..", "..3......", "........9"] def test_mozni(self): plosca = self.plosca self.assertEqual(mozni(plosca, 1, 3), {"7"}) self.assertEqual(mozni(plosca, 1, 7), {"3"}) self.assertEqual(mozni(plosca, 3, 9), {"1", "2", "3"}) self.assertEqual(mozni(plosca, 8, 2), {"2", "5", "6", "7", "8"}) self.assertEqual(mozni(plosca, 5, 4), {"1", "2", "4", "5", "6", "7", "8", "9"}) self.assertEqual(mozni(plosca, 1, 1), {"3", "5", "7", "8"}) def test_vsi_enkratni(self): self.assertEqual(vsi_enkratni(self.plosca), {(1, 3), (1, 7)}) plosca = self.plosca.copy() plosca[0] = ["517..2..6"] self.assertEqual(vsi_enkratni(self.plosca), {(1, 3), (1, 7)}) def test_pravilna(self): self.assertTrue(pravilna(self.plosca)) plosca = self.plosca.copy() plosca[5] = "....3...." self.assertFalse(pravilna(plosca)) plosca = self.plosca.copy() plosca[6] = "9..9..1.." self.assertFalse(pravilna(plosca)) plosca = self.plosca.copy() plosca[7] = "1........" plosca[8] = "..1......" self.assertFalse(pravilna(plosca)) class TestManjkajoceRazglednice(unittest.TestCase): def test_manjkajoce_razglednice(self): self.assertEqual(manjkajoce_razglednice( {"Ana": {"Berta", "Cilka", "Dani"}, "Berta": {"Ema", "Fanči"}, "Cilka": {"Greta"}}, "Ana"), 15) self.assertEqual(manjkajoce_razglednice( {"Ana": {"Berta", "Cilka", "Dani"}, "Berta": {"Ema", "Fanči"}, "Cilka": {"Greta"}}, "Berta"), 7) self.assertEqual(manjkajoce_razglednice( {"Ana": {"Berta", "Cilka", "Dani"}, "Berta": {"Ema", "Fanči"}, "Cilka": {"Greta"}}, "Dani"), 3) crke = "abcdefghijklmnopqrstuvwxyz" self.assertEqual( manjkajoce_razglednice({x: y for x, y in zip(crke, crke[1:])}, "a"), 2 * len(crke) + 1) self.assertEqual( manjkajoce_razglednice({x: y for x, y in zip(crke, crke[1:])}, "c"), 2 * len(crke) + 1 - 4) class TestRazredSudoku(unittest.TestCase): def test_postavi(self): def assertSth(what, vrstica, stolpec, stevilka): global mozni try: try: mozni0 = mozni except: mozni0 = None def m(pl, vr, st): self.assertEqual(pl, ["".join(v) for v in pl], "Stanja plošče si nisi pravilno zapomnil") return {stevilka} if what else set() mozni = m [self.assertFalse, self.assertTrue][what](sudoku.postavi( vrstica, stolpec, stevilka)) if what: plosca[vrstica - 1][stolpec - 1] = stevilka finally: if mozni0 is None: del mozni global mozni sudoku = Sudoku() plosca = [['.'] * 9 for _ in range(9)] assertSth(True, 1, 1, "5") assertSth(True, 1, 2, "1") assertSth(True, 2, 2, "9") assertSth(True, 3, 2, "4") assertSth(False, 1, 3, "5") assertSth(True, 4, 3, "5") assertSth(False, 1, 3, "4") assertSth(True, 5, 3, "4") assertSth(False, 3, 1, "5") assertSth(True, 3, 6, "5") if __name__ == "__main__": unittest.main()