import unittest import os import zipfile import time class TestGovorice(unittest.TestCase): @classmethod def setUpClass(cls): base, ext = os.path.splitext(os.path.basename(__file__)) zf = zipfile.ZipFile(__file__ + ".zip", "a", zipfile.ZIP_DEFLATED) zf.write(__file__, "{}.{}{}".format(base, int(time.time()), ext)) zf.close() def test_znanci(self): self.assertSetEqual( znanci({"A": set("abc"), "B": set("abd"), "C": set("def"), "D": set("af")}), {("A", "B"), ("A", "D"), ("B", "C"), ("B", "D"), ("C", "D"), ("B", "A"), ("D", "A"), ("C", "B"), ("D", "B"), ("D", "C")} ) self.assertSetEqual( znanci({"A": set("abc"), "B": set("dca")}), {("A", "B"), ("B", "A")} ) self.assertSetEqual(znanci({"A": set("abc"), "B": set("def")}), set()) self.assertSetEqual( znanci({"A": set("abc"), "B": set("def"), "C": {"a"}}), {("A", "C"), ("C", "A")}) def test_govorica(self): krozki = {"A": set("abc"), "B": set("abd"), "C": set("def"), "D": set("af")} self.assertTrue(govorica("ABCD", krozki)) self.assertTrue(govorica("DCBA", krozki)) self.assertTrue(govorica("DC", krozki)) self.assertTrue(govorica("CB", krozki)) self.assertTrue(govorica("AB", krozki)) self.assertFalse(govorica("ACDB", krozki)) self.assertFalse(govorica("DACB", krozki)) self.assertFalse(govorica("BDAC", krozki)) def test_najkrajsa_pot(self): krozki = {"A": set("12"), "B": set("134"), "C": set("356"), "D": set("57"), "E": set("2"), "F": set("48"), "G": set("78"), "H": set("69"), "I": set("9")} self.assertEqual(list(najkrajsa_pot("A", "D", krozki)), list("ABCD")) self.assertEqual(list(najkrajsa_pot("A", "G", krozki)), list("ABFG")) self.assertEqual(list(najkrajsa_pot("G", "A", krozki)), list("GFBA")) self.assertEqual(list(najkrajsa_pot("A", "C", krozki)), list("ABC")) self.assertEqual(list(najkrajsa_pot("A", "F", krozki)), list("ABF")) self.assertEqual(list(najkrajsa_pot("C", "A", krozki)), list("CBA")) self.assertEqual(list(najkrajsa_pot("B", "C", krozki)), list("BC")) self.assertEqual(list(najkrajsa_pot("C", "B", krozki)), list("CB")) if __name__ == "__main__": unittest.main()