def setUp(self): self.state = SolitaireMancala() # the only winner configurations for six houses board self.win = [[0, 0, 0, 0, 2, 4, 6], [0, 0, 0, 2, 4, 0, 0], [0, 0, 1, 1, 3, 5, 0], [0, 0, 1, 3, 0, 0, 0], [0, 0, 1, 3, 2, 4, 6], [0, 0, 2, 0, 0, 0, 0], [0, 0, 2, 0, 2, 4, 6], [0, 0, 2, 2, 4, 0, 0], [0, 1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 2, 4, 6], [0, 1, 0, 2, 4, 0, 0], [0, 1, 1, 1, 3, 5, 0], [0, 1, 1, 3, 0, 0, 0], [0, 1, 1, 3, 2, 4, 6], [0, 1, 2, 0, 0, 0, 0], [0, 1, 2, 0, 2, 4, 6], [0, 1, 2, 2, 4, 0, 0]]
class TestClass(unittest.TestCase): def setUp(self): self.state = SolitaireMancala() # the only winner configurations for six houses board self.win = [[0, 0, 0, 0, 2, 4, 6], [0, 0, 0, 2, 4, 0, 0], [0, 0, 1, 1, 3, 5, 0], [0, 0, 1, 3, 0, 0, 0], [0, 0, 1, 3, 2, 4, 6], [0, 0, 2, 0, 0, 0, 0], [0, 0, 2, 0, 2, 4, 6], [0, 0, 2, 2, 4, 0, 0], [0, 1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 2, 4, 6], [0, 1, 0, 2, 4, 0, 0], [0, 1, 1, 1, 3, 5, 0], [0, 1, 1, 3, 0, 0, 0], [0, 1, 1, 3, 2, 4, 6], [0, 1, 2, 0, 0, 0, 0], [0, 1, 2, 0, 2, 4, 6], [0, 1, 2, 2, 4, 0, 0]] def test_init_state(self): self.assertEqual(str(self.state), str([0])) def test_set_state(self): self.state.set_board([0, 0, 0, 0, 0, 0, 0]) self.assertEqual(str(self.state), str([0, 0, 0, 0, 0, 0, 0])) self.state.set_board([0, 0, 1, 1, 3, 5]) self.assertEqual(str(self.state), str([5, 3, 1, 1, 0, 0])) def test_get_seeds(self): self.state.set_board([0, 0, 1, 1, 3, 5]) self.assertEqual(self.state.get_num_seeds(0), 0) self.assertEqual(self.state.get_num_seeds(1), 0) self.assertEqual(self.state.get_num_seeds(2), 1) self.assertEqual(self.state.get_num_seeds(3), 1) self.assertEqual(self.state.get_num_seeds(4), 3) self.assertEqual(self.state.get_num_seeds(5), 5) self.assertNotEqual(self.state.get_num_seeds(5), 6) def test_legal_moves(self): self.state.set_board([0, 1, 2, 3, 4, 5, 6]) for house in [1, 2, 3, 4, 5, 6]: self.assertTrue(self.state.is_legal_move(house)) self.state.set_board([0, 2, 3, 4, 5, 6, 3]) for house in [0, 2, 3, 4, 5, 6, 3]: self.assertFalse(self.state.is_legal_move(house)) def test_i_like_to_move_it(self): self.state.set_board([0, 1, 2, 0, 2, 4, 6]) self.state.apply_move(1) self.assertEqual(str(self.state), str([6, 4, 2, 0, 2, 0, 1])) self.state.set_board([0, 1, 2, 0, 2, 4, 6]) self.state.apply_move(2) self.assertEqual(str(self.state), str([6, 4, 2, 0, 0, 2, 1])) self.state.set_board([0, 1, 2, 0, 2, 4, 6]) self.state.apply_move(6) self.assertEqual(str(self.state), str([0, 5, 3, 1, 3, 2, 1])) def test_i_wanna_move_it_all(self): board = [1, 1, 2, 2, 4, 0] self.state.set_board(board) legal_sequence = [1, 2, 1, 4, 1, 3, 1, 2, 1] for game in xrange(len(board)): self.assertEqual(self.state.choose_move(), legal_sequence[game]) self.state.apply_move(legal_sequence[game]) def test_providing_moves(self): self.state.set_board([0, 1, 1, 3, 2, 4, 6]) self.assertEqual(self.state.choose_move(), 1) self.state.set_board([1, 0, 1, 3, 2, 4, 6]) self.assertEqual(self.state.choose_move(), 3) self.state.set_board([2, 1, 2, 0, 2, 4, 6]) self.assertEqual(self.state.choose_move(), 1) self.state.set_board([3, 0, 2, 0, 2, 4, 6]) self.assertEqual(self.state.choose_move(), 2) def test_moves_and_applies(self): self.state.set_board([0, 0, 1, 1, 3, 5]) self.assertEqual(self.state.choose_move(), 5) self.state.apply_move(5) self.assertEqual(str(self.state), str([0, 4, 2, 2, 1, 1])) self.state.set_board([0, 0, 1, 1, 3, 4]) self.assertEqual(self.state.choose_move(), 0) def test_won(self): for game in xrange(len(self.win)): self.state.set_board(self.win[game]) self.assertFalse(self.state.is_game_won()) self.state.set_board([15, 0, 0, 0, 0, 0, 0]) self.assertTrue(self.state.is_game_won()) def test_move_it(self): for game in xrange(len(self.win)): self.state.set_board(self.win[game]) self.state.plan_moves() self.assertTrue(self.state.is_game_won()) def test_fail_it(self): self.state.set_board([0, 1, 2, 2, 4, 0, 1]) self.state.plan_moves() self.assertFalse(self.state.is_game_won()) self.state.set_board([0, 0, 1]) self.assertFalse(self.state.is_legal_move(1)) self.assertFalse(self.state.is_legal_move(2)) self.state.plan_moves() self.assertFalse(self.state.is_game_won())