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)); }
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); }