示例#1
0
        public async Task NewGameAfterPlayerIIMoveWithWrongETag_Should_ReturnError()
        {
            var gameId = Guid.NewGuid();

            var(sut, game, board) = BuildSut(gameId);

            const string fenAfterPlayerIMove        = "rnbqkbnr/pppppppp/8/8/P7/8/1PPPPPPP/RNBQKBNR";
            const string playerIOriginalPosition    = "A2";
            const string playerINewPosition         = "A4";
            var          playerIMoveResultETag      = Guid.NewGuid().ToString();
            IBoardState  boardStateAfterPlayerIMove = new OrleansChess.Common.BoardState(fenAfterPlayerIMove, playerIOriginalPosition, playerINewPosition, playerIMoveResultETag);

            const string fenAfterPlayerIIMove     = "rnbqkbnr/pp1ppppp/8/2p5/P7/8/1PPPPPPP/RNBQKBNR";
            const string playerIIOriginalPosition = "C7";
            const string playerIINewPosition      = "C5";
            var          playerIIMoveResultETag   = Guid.NewGuid().ToString();

            IBoardState boardStateAfterPlayerIIMove = new OrleansChess.Common.BoardState(fenAfterPlayerIIMove, playerIIOriginalPosition, playerIINewPosition, playerIIMoveResultETag);

            game.SetupSequence(x =>
                               x.ApplyValidatedMove(It.IsAny <IPlayerMove>()))
            .Returns(Task.FromResult(boardStateAfterPlayerIMove))
            .Returns(Task.FromResult(boardStateAfterPlayerIIMove));

            await board.PlayerIMove(playerIOriginalPosition, playerINewPosition, gameId.ToString());

            var wrongETag = Guid.NewGuid().ToString();
            var result    = await board.PlayerIIMove(playerIIOriginalPosition, playerIINewPosition, wrongETag);

            result.WasSuccessful.Should().BeFalse();
        }
示例#2
0
        public async Task NewGameAfterPlayerIMove_Should_RecieveCorrectInformation()
        {
            var gameId = Guid.NewGuid();

            var(sut, game, board) = BuildSut(gameId);

            var         fen = "test";
            var         originalPosition = "A2";
            var         newPosition      = "A4";
            var         resultETag       = Guid.NewGuid().ToString();
            IBoardState boardState       = new OrleansChess.Common.BoardState(fen, originalPosition, newPosition, resultETag);

            game.Setup(x => x.ApplyValidatedMove(It.IsAny <IPlayerMove>())).Returns(Task.FromResult(boardState));
            var result = await board.PlayerIMove("A2", "A4", gameId.ToString());

            result.WasSuccessful.Should().BeTrue();
            result.Data.ETag.Should().Be(resultETag);
            result.Data.Fen.Should().Be(fen);
            result.Data.NewPosition.Should().Be(newPosition);
            result.Data.OriginalPosition.Should().Be(originalPosition);
        }