"""Tests for the input/output component.""" import unittest from imago.data.enums import Player from imago.gameLogic.gameState import GameState class TestGameState(unittest.TestCase): """Test GameState component.""" def testCurrentPlayer(self): """Test simple commands.""" size = 9 state = GameState(size) self.assertEqual(state.getCurrentPlayer(), Player.BLACK) self.assertEqual(state.getPlayerCode(), 'B') state.playMove(0, 0) self.assertEqual(state.getCurrentPlayer(), Player.WHITE) self.assertEqual(state.getPlayerCode(), 'W') def testPlays(self): """Test simple commands.""" size = 3 state = GameState(size) self.assertEqual(state.getBoard().getBoard(), [ [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY] ]) state.playMove(1, 1) self.assertEqual(state.getBoard().getBoard(), [ [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.BLACK, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY] ]) state.playPass() self.assertEqual(state.getBoard().getBoard(), [ [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.BLACK, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY] ]) state.undo() self.assertEqual(state.getBoard().getBoard(), [ [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.BLACK, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY] ]) state.undo() self.assertEqual(state.getBoard().getBoard(), [ [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY] ]) state.passForPlayer(Player.WHITE) self.assertEqual(state.getBoard().getBoard(), [ [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY] ]) self.assertFalse(state.playMove(-1, -1)) self.assertEqual(state.getBoard().getBoard(), [ [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY], [Player.EMPTY, Player.EMPTY, Player.EMPTY] ]) state.lastMove = None self.assertEqual(state.getCurrentPlayer(), Player.BLACK) self.assertRaises(RuntimeError, state.playMove, 0, 0) if __name__ == '__main__': unittest.main()