def main(filename=None): if filename is None: if len(sys.argv) == 2: filename = sys.argv[1] else: print("Usage: runme.py input_file") return 1 with open(filename, "r") as f: num_cases = read_int(f) for i, line in enumerate(f, 1): parts = line.split() C = int(parts[0]) combination_rules = parts[1:C+1] opposition_rules = parts[C+2:-2] elements_to_invoke = parts[-1] wizard = MagickaWizard(combination_rules, opposition_rules) wizard.invoke_elements(elements_to_invoke) print("Case #{0}: {1}".format(i, wizard.element_list_as_string())) return 0
def setUp(self): combination_rules = ["ABC", "DEF"] opposition_rules = ["AB", "AD"] self.wizard = MagickaWizard(combination_rules, opposition_rules)
class TestMagickaWizard(unittest.TestCase): """ Unit Tests for the Magicka problem MagickaWizard class for Google Code Jam 2011 Qualification """ def setUp(self): combination_rules = ["ABC", "DEF"] opposition_rules = ["AB", "AD"] self.wizard = MagickaWizard(combination_rules, opposition_rules) def test_init(self): self.assertEqual(self.wizard.element_list, []) d1 = {"AB":"C", "BA":"C", "DE":"F", "ED":"F"} self.assertEqual(self.wizard._combination_result, d1) d2 = {"A":set(("B", "D")), "B":set("A"), "D":set("A")} self.assertEqual(self.wizard._opposites_of, d2) def test_can_be_combined(self): self.assertTrue(self.wizard._can_be_combined("A", "B")) self.assertTrue(self.wizard._can_be_combined("B", "A")) self.assertTrue(self.wizard._can_be_combined("D", "E")) self.assertFalse(self.wizard._can_be_combined("A", "D")) self.assertFalse(self.wizard._can_be_combined("X", "Y")) def test_an_opposite_exists(self): self.wizard.element_list = ["D"] self.assertTrue(self.wizard._an_opposite_exists("A")) self.wizard.element_list = ["A"] self.assertTrue(self.wizard._an_opposite_exists("B")) self.assertFalse(self.wizard._an_opposite_exists("X")) def test_invoke_element(self): self.wizard.invoke_element("A") self.assertEqual(self.wizard.element_list, ["A"]) self.wizard.invoke_element("B") self.assertEqual(self.wizard.element_list, ["C"]) self.wizard.invoke_element("A") self.wizard.invoke_element("X") self.wizard.invoke_element("B") self.assertEqual(self.wizard.element_list, []) def test_element_list_as_string(self): self.assertEqual(self.wizard.element_list_as_string(), "[]") self.wizard.invoke_element("G") self.assertEqual(self.wizard.element_list_as_string(), "[G]") self.wizard.invoke_elements("HI") self.assertEqual(self.wizard.element_list_as_string(), "[G, H, I]")