Beispiel #1
0
        public GetMovesResponse GetGameMoves(string gameId, [FromUri] int?start = null, [FromUri] int?until = null)
        {
            try
            {
                var moves       = GameKeeper.GetGameMoves(gameId, start, until);
                var moveResults = new List <GetMoveResponse>();

                foreach (var move in moves)
                {
                    var moveResult = new GetMoveResponse()
                    {
                        player = move.Player,
                        type   = move.MoveType
                    };
                    if (move is TokenMove)
                    {
                        moveResult.column = ((TokenMove)move).Column;
                    }
                    ;
                    moveResults.Add(moveResult);
                }

                return(new GetMovesResponse()
                {
                    moves = moveResults
                });
            }
            catch (KeyNotFoundException ex)
            {
                // game not found
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)
                {
                    Content = new StringContent(ex.Message)
                });
            }
            catch (ApplicationException ex)
            {
                // moves not found
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)
                {
                    Content = new StringContent(ex.Message)
                });
            }
            catch (IndexOutOfRangeException ex)
            {
                // invalid start or end indexes = malformed request
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(ex.Message)
                });
            }
            catch (ArgumentException ex)
            {
                // the end index is less than the start index - malformed request
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(ex.Message)
                });
            }
        }
Beispiel #2
0
        public void GetGameMovesIsEmptyForNewGame()
        {
            var newGameId = GameKeeper.AddGame(4, 4, players);
            var moves     = GameKeeper.GetGameMoves(newGameId);

            Assert.IsEmpty(moves);
        }
Beispiel #3
0
        public void CanGetAllGameMoves()
        {
            var newGameId = GameKeeper.AddGame(4, 4, players);
            var move1     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[0], 0));
            var move2     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[1], 1));
            var move3     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[0], 0));
            var move4     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[1], 1));

            var moves = GameKeeper.GetGameMoves(newGameId);

            Assert.AreEqual(4, moves.Count());
        }
Beispiel #4
0
        public void CanPostMoves()
        {
            var newGameId = GameKeeper.AddGame(4, 4, players);
            var move1     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[0], 0));
            var move2     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[1], 0));

            Assert.AreEqual(0, move1);
            Assert.AreEqual(1, move2);

            var moves = GameKeeper.GetGameMoves(newGameId);

            Assert.AreEqual(2, moves.Count());
        }
Beispiel #5
0
        public void CanGetFirstTwoGameMoves()
        {
            var newGameId = GameKeeper.AddGame(4, 4, players);
            var move1     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[0], 0));
            var move2     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[1], 1));
            var move3     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[0], 0));
            var move4     = GameKeeper.RegisterMove(newGameId, new TokenMove(players[1], 1));

            var moves = GameKeeper.GetGameMoves(newGameId, 0, 1);

            Assert.AreEqual(2, moves.Count());
            Assert.AreEqual(0, ((TokenMove)moves.First()).Column);
            Assert.AreEqual(1, ((TokenMove)moves.Last()).Column);
        }