public ActionResult <IEnumerable <string> > GetPossiblePositions(string position, int moves = 1)
        {
            var   inputPattern = @"^\w\d$";
            Regex r            = new Regex(inputPattern, RegexOptions.IgnoreCase);

            var validMoves = moves > 0 && moves <= 2;

            if (!r.Match(position).Success || !validMoves)
            {
                return(BadRequest("Invalid input"));
            }

            var chessPosition = new ChessPosition(position);

            if (!chessPosition.Valid)
            {
                return(BadRequest("Invalid chess position"));
            }

            var boardKnightPredictor = new BoardKnightPredictor();

            IEnumerable <ChessPosition> positions = moves == 1 ? boardKnightPredictor.GetPossiblePositions(chessPosition) :
                                                    boardKnightPredictor.GetPossiblePositionsWith2Moves(chessPosition);

            var result = positions.Select(x => x.AlgebraicNotation);

            return(Ok(result));
        }
Пример #2
0
        public void GetPossibleMoves_Test(string positionStr, string[] possibleMoves)
        {
            var predictor       = new BoardKnightPredictor();
            var predictedValues = predictor.GetPossiblePositions(new ChessPosition(positionStr))
                                  .Select(x => x.AlgebraicNotation).ToArray();

            var result = Enumerable.SequenceEqual(predictedValues.OrderBy(x => x), possibleMoves.OrderBy(x => x));

            Assert.Equal(true, result);
        }