class TestNavigationState(unittest.TestCase): """ Performs tests on NavigationState """ def setUp(self): path = res.maps.extras.__path__[0] + '/ex_simple.txt' self.task = Map(open(path, 'r').read().splitlines()) self.test_state = NavigationState(self.task) def test_id_set_correctly(self): """ Test that id is set as intended """ correct_id = 1 self.assertEqual(correct_id, self.test_state.sid) next_id = 2 for i, x in enumerate(self.test_state.generate_all_successors()): self.assertEqual(next_id + i, x.sid) def test_heuristic_evaluation(self): """ Test that heuristic evaluation for the default task is correct""" correct_h = 6.4031242374328485 self.assertEqual(correct_h, self.test_state.heuristic_evaluation()) def test_generate_all_successors(self): """ Check that we get the correct number of successors """ correct_length = 2 successors = self.test_state.generate_all_successors() self.assertEqual(correct_length, len(successors)) def test_is_solution(self): """ Test a solution state and non-solution state """ self.assertFalse(self.test_state.is_solution()) search = NavigationBfs(self.task) search.verbosity = C.verbosity.TEST solution_state = search.best_first_search() self.assertTrue(solution_state.is_solution())