def test_successors_correctness(self): succs = StateSuccessorFinder(States.state1).get_successors() self.assertEqual( set([ States.state1_succ1, States.state1_succ2, States.state1_succ3, States.state1_succ4, States.state1_succ5 ]), succs) succs = StateSuccessorFinder(States.state5).get_successors() self.assertTrue(States.state5_succ1 in succs)
def test_get_movable_directions_of_block(self): t = StateSuccessorFinder(States.state1) self.assertEqual(t.get_movable_directions_of_block(1), set(["r", "d"])) self.assertEqual(t.get_movable_directions_of_block(2), set(["l", "u", "d"])) t = StateSuccessorFinder(States.state3) self.assertEqual(t.get_movable_directions_of_block(1), set(["u", "r", "d", "l"]))
def test_get_neighbor_cells(self): t = StateSuccessorFinder(States.state0) self.assertEqual(t.get_neighbor_cells((0, 0)), {"u": None, "r": (0, 1), "d": (1, 0), "l": None}) self.assertEqual(t.get_neighbor_cells((1, 0)), {"u": (0, 0), "r": (1, 1), "d": (2, 0), "l": None}) self.assertEqual(t.get_neighbor_cells((M - 1, N - 1)), {"u": (M - 2, N - 1), "r": None, "d": None, "l": (M - 1, N - 2)}) self.assertEqual(t.get_neighbor_cells((1, 2)), {"u": (0, 2), "r": (1, 3), "d": (2, 2), "l": (1, 1)})
def test_successors_count(self): succs = StateSuccessorFinder(States.state1).get_successors() self.assertEqual(len(succs), 5) succs = StateSuccessorFinder(States.state0).get_successors() self.assertEqual(len(succs), 0) succs = StateSuccessorFinder(States.state4).get_successors() self.assertEqual(len(succs), 4) succs = StateSuccessorFinder(States.state3).get_successors() self.assertEqual(len(succs), 4) succs = StateSuccessorFinder(States.state_full).get_successors() self.assertEqual(len(succs), 0)
def test_get_neighbor_cells(self): t = StateSuccessorFinder(States.state0) self.assertEqual(t.get_neighbor_cells((0, 0)), { "u": None, "r": (0, 1), "d": (1, 0), "l": None }) self.assertEqual(t.get_neighbor_cells((1, 0)), { "u": (0, 0), "r": (1, 1), "d": (2, 0), "l": None }) self.assertEqual(t.get_neighbor_cells((M - 1, N - 1)), { "u": (M - 2, N - 1), "r": None, "d": None, "l": (M - 1, N - 2) }) self.assertEqual(t.get_neighbor_cells((1, 2)), { "u": (0, 2), "r": (1, 3), "d": (2, 2), "l": (1, 1) })
def test_get_movable_blocks(self): t = StateSuccessorFinder(States.state0) self.assertEqual(t.get_movable_blocks(), set()) t = StateSuccessorFinder(States.state1) self.assertEqual( t.get_movable_blocks(), set([ (1, "r"), (1, "d"), (2, "u"), (2, "l"), (2, "d"), ])) t = StateSuccessorFinder(States.state4) self.assertEqual(t.get_movable_blocks(), set([ (4, "d"), (3, "d"), (3, "r"), (2, "r"), ]))
def test_get_movable_blocks(self): t = StateSuccessorFinder(States.state0) self.assertEqual(t.get_movable_blocks(), set()) t = StateSuccessorFinder(States.state1) self.assertEqual(t.get_movable_blocks(), set([ (1, "r"), (1, "d"), (2, "u"), (2, "l"), (2, "d"), ])) t = StateSuccessorFinder(States.state4) self.assertEqual(t.get_movable_blocks(), set([ (4, "d"), (3, "d"), (3, "r"), (2, "r"), ]))