def test_diff_alpha_labyrinth(self): ways.evaluate_ways(self.lab) ways.find_exit(self.lab) self.lab.alpha = 1 way = ways.way_to_exit(self.lab)[0] self.assertEqual(11, len(way)) self.lab.alpha = 0 way = ways.way_to_exit(self.lab)[0] self.assertEqual(3, len(way))
def test_two_exits(self): lab = labth() lab.alpha = 1 lab.bombs = 0 with open(os.path.join("Tests", "two_exits_input.txt"), 'r') as lab_: lab = fileinput.process_file(lab, lab_) ways.evaluate_ways(lab) way = ways.way_to_exit(lab)[0] self.assertEqual((1, 5), (way[len(way) - 1].i, way[len(way) - 1].j))
def test_impassable_labyrinth(self): lab = labth() lab.alpha = 1 lab.bombs = 1 with open(os.path.join("Tests", "impassable_lab_input.txt"), 'r') as lab_: lab = fileinput.process_file(lab, lab_) ways.evaluate_ways(lab) self.assertEqual(-1, ways.way_to_exit(lab)[2])
def test_dif_surfaces(self): lab = labth() lab.alpha = 1 lab.bombs = 0 lab.landtypes['c'] = 3 lab.landtypes['b'] = 2 with open(os.path.join("Tests", "dif_surf_input.txt"), 'r') as lab_: lab = fileinput.process_file(lab, lab_) ways.evaluate_ways(lab) time = ways.way_to_exit(lab)[2] self.assertEqual(11, time)
def main(): try: labth = LabyrinthClass() labth = parsing.parse_input(labth) if not parsing.correct_input(labth): return labth = fileinput.input_file(labth) if not labth or not len(labth.finish): return ways.evaluate_ways(labth) way, bombs, time = ways.way_to_exit(labth) output.out(labth, way, bombs, labth.alpha, time) except (ValueError) as e: print(e)
def test_output_WASD(self): ways.evaluate_ways(self.lab) ways.find_exit(self.lab) way = ways.way_to_exit(self.lab)[0] self.assertEqual(self.lab.start[0], way[0].i) self.assertEqual(self.lab.start[1], way[0].j) finish = False for exit in self.lab.finish: if exit[0] == \ way[len(way) - 1].i and exit[1] == way[len(way) - 1].j: finish = True self.assertTrue(finish) cur = 0 first = True for next in way: if first: first = False cur = next continue dif = abs(cur.i - next.i) + abs(cur.j - next.j) self.assertLess(dif, 2) self.assertGreaterEqual(dif, 0) cur = next