def test_render(self): game = Kalah(6, 4) a = ' **** ' b = '* *' c = '=' * 7 w1 = a + ' ' + c * game.holes + ' ' + a + "\n" w2 = '* *' + ' ' + '| ' * game.holes + '|' + ' ' + '* *\n' w3 = b + ' ' for k, v in game.board.items(): if k == 'bank_player_one' or k == 'bank_player_one': break else: w3 += f"| {v}{' ' if v<10 else ''} " w3 += '| ' + b + "\n" w = f"* {game.board['bank_player_tow']}{' ' if game.board['bank_player_tow'] < 10 else ''} * {c * game.holes} *{' ' if game.board['bank_player_one'] < 10 else ''}{game.board['bank_player_one']} *\n" w5 = b + ' ' flag = 0 for k, v in game.board.items(): if k == 'bank_player_one': flag = 1 if not flag: w5 += f"| {v}{' ' if v<10 else ''} " w5 += '| ' + b + "\n" s = w1 + w2 + w3 + w2 + w + w2 + w5 + w2 + w1 self.assertEqual(game.__str__(), s)
class KalahTestCase(unittest.TestCase): def setUp(self): self.game = Kalah(6, 4) self.game1 = Kalah(5, 5) self.game2 = Kalah(4, 6) def tearDown(self): pass def test_init(self): self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game1.kalah_board, [5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0]) def test_illegal_hole(self): self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.game.play(6) self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game1.kalah_board, [5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0]) self.game.play(-5) self.assertEqual(self.game1.kalah_board, [5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0]) def test_simple_move(self): self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.game.play(0) self.assertEqual(self.game.kalah_board, [0, 5, 5, 5, 5, 4, 0, 4, 4, 4, 4, 4, 4, 0]) def test_cross_move(self): self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.game.play(2) self.assertEqual(self.game.kalah_board, [4, 4, 0, 5, 5, 5, 1, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game.player_turn, True) self.game.play(5) self.assertEqual(self.game.kalah_board, [4, 4, 0, 5, 5, 0, 2, 5, 5, 5, 5, 4, 4, 0]) def test_two_simple_moves(self): self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.game.play(1) self.assertEqual(self.game.kalah_board, [4, 0, 5, 5, 5, 5, 0, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game.player_turn, False) self.game.play(1) self.assertEqual(self.game.kalah_board, [4, 0, 5, 5, 5, 5, 0, 4, 0, 5, 5, 5, 5, 0]) def test_player_2_crosses(self): self.test_two_simple_moves() self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [4, 0, 5, 5, 5, 5, 0, 4, 0, 5, 5, 5, 5, 0]) self.game.play(2) self.assertEqual(self.game.kalah_board, [4, 0, 0, 6, 6, 6, 1, 5, 0, 5, 5, 5, 5, 0]) self.assertEqual(self.game.player_turn, False) self.game.play(2) self.assertEqual(self.game.kalah_board, [5, 0, 0, 6, 6, 6, 1, 5, 0, 0, 6, 6, 6, 1]) self.assertEqual(self.game.player_turn, True) def test_cross_other_bank(self): self.assertEqual(self.game2.player_turn, True) self.assertEqual(self.game2.kalah_board, [6, 6, 6, 6, 0, 6, 6, 6, 6, 0]) self.game2.play(3) self.assertEqual(self.game2.kalah_board, [7, 6, 6, 0, 1, 7, 7, 7, 7, 0]) self.assertEqual(self.game2.player_turn, False) def test_empty_hole(self): self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.game.play(2) self.assertEqual(self.game.kalah_board, [4, 4, 0, 5, 5, 5, 1, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game.player_turn, True) self.game.play(2) self.assertEqual(self.game.kalah_board, [4, 4, 0, 5, 5, 5, 1, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game.player_turn, True) def test_bonus_move_player_1(self): self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.game.play(2) self.assertEqual(self.game.kalah_board, [4, 4, 0, 5, 5, 5, 1, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game.player_turn, True) def test_bonus_move_player_2(self): self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.game.play(0) self.assertEqual(self.game.kalah_board, [0, 5, 5, 5, 5, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(self.game.player_turn, False) self.game.play(2) self.assertEqual(self.game.kalah_board, [0, 5, 5, 5, 5, 4, 0, 4, 4, 0, 5, 5, 5, 1]) self.assertEqual(self.game.player_turn, False) def test_capture_player_1(self): self.game.kalah_board = [ 1, 0, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, ] self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [ 1, 0, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, ]) self.game.play(0) self.assertEqual(self.game.kalah_board, [ 0, 0, 3, 4, 5, 6, 10, 1, 0, 3, 4, 5, 6, 7, ]) self.assertEqual(self.game.player_turn, True) def test_illegal_capture(self): self.assertEqual(self.game.player_turn, True) self.game.kalah_board = [ 1, 2, 3, 1, 5, 3, 7, 0, 0, 1, 0, 5, 6, 24, ] self.game.play(5) self.game.kalah_board = [ 1, 2, 3, 1, 5, 0, 8, 1, 1, 1, 0, 5, 6, 24, ] self.assertEqual(self.game.player_turn, False) def test_no_capture_player(self): self.game.kalah_board = [ 1, 0, 3, 4, 5, 6, 7, 1, 0, 3, 4, 5, 6, 7, ] self.assertEqual(self.game.player_turn, True) self.assertEqual(self.game.kalah_board, [ 1, 0, 3, 4, 5, 6, 7, 1, 0, 3, 4, 5, 6, 7, ]) self.game.play(0) self.assertEqual(self.game.kalah_board, [ 0, 1, 3, 4, 5, 6, 7, 1, 0, 3, 4, 5, 6, 7, ]) self.assertEqual(self.game.player_turn, False) def test_game_ends_and_player_1_capture(self): self.assertEqual(self.game.player_turn, True) self.game.kalah_board = [ 0, 0, 1, 0, 0, 0, 21, 1, 2, 3, 1, 5, 6, 8, ] self.assertEqual(self.game.new_game_is_needed, False) self.game.play(2) self.assertEqual(self.game.kalah_board, [ 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25, ]) self.assertEqual(self.game.player_2, 1) self.assertEqual(self.game.player_1, 0) self.assertEqual(self.game.ties, 0) self.assertEqual(self.game.new_game_is_needed, True) def test_game_ends_and_player_2_capture(self): self.assertEqual(self.game.player_turn, True) self.game.kalah_board = [ 1, 2, 3, 1, 5, 6, 8, 0, 0, 1, 0, 0, 0, 21, ] self.assertEqual(self.game.new_game_is_needed, False) self.game.player_turn = not self.game.player_turn self.game.play(2) self.assertEqual(self.game.kalah_board, [ 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 23, ]) self.assertEqual(self.game.player_2, 0) self.assertEqual(self.game.player_1, 1) self.assertEqual(self.game.ties, 0) self.assertEqual(self.game.new_game_is_needed, True) def test_game_ends_and_tie(self): self.assertEqual(self.game.player_turn, True) self.game.kalah_board = [ 0, 1, 0, 0, 0, 0, 22, 0, 0, 1, 0, 0, 0, 24, ] self.assertEqual(self.game.new_game_is_needed, False) self.game.play(1) self.game.kalah_board = [ 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 24, ] self.assertEqual(self.game.player_2, 0) self.assertEqual(self.game.player_1, 0) self.assertEqual(self.game.ties, 1) self.assertEqual(self.game.new_game_is_needed, True) def test_game_ends_player_1_capture_more_than_half(self): self.assertEqual(self.game.player_turn, True) self.game.kalah_board = [ 0, 0, 1, 0, 5, 6, 24, 1, 2, 3, 1, 5, 6, 7, ] self.assertEqual(self.game.new_game_is_needed, False) self.game.play(2) self.game.kalah_board = [ 0, 0, 0, 0, 5, 6, 26, 1, 2, 3, 0, 5, 6, 7, ] self.assertEqual(self.game.player_2, 0) self.assertEqual(self.game.player_1, 1) self.assertEqual(self.game.ties, 0) self.assertEqual(self.game.new_game_is_needed, True) def test_game_ends_player_2_capture_more_than_half(self): self.assertEqual(self.game.player_turn, True) self.game.kalah_board = [ 1, 2, 3, 1, 5, 6, 7, 0, 0, 1, 0, 5, 6, 24, ] self.game.player_turn = not self.game.player_turn self.assertEqual(self.game.player_turn, False) self.game.play(2) self.game.kalah_board = [ 1, 2, 3, 0, 5, 6, 7, 0, 0, 0, 0, 5, 6, 26, ] self.assertEqual(self.game.player_2, 1) self.assertEqual(self.game.player_1, 0) self.assertEqual(self.game.ties, 0) self.assertEqual(self.game.new_game_is_needed, True) def test_repr(self): self.assertEqual( repr(self.game), "Kalah(4, 6, status=(4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0), player = 1)" ) self.game.player_turn = not self.game.player_turn self.assertEqual( repr(self.game), "Kalah(4, 6, status=(4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0), player = 2)" ) def test_str(self): self.assertEqual( self.game.__str__(), "Kalah[4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0], player = 1") self.game.player_turn = not self.game.player_turn self.assertEqual( self.game.__str__(), "Kalah[4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0], player = 2")