public JsonResult Calculete(CalculeteRequest calculeteRequest) { ICalculate calculate = _calculate; List <CalculateResponse> result = calculate.Moving(calculeteRequest); return(new JsonResult(result)); }
public List <CalculateResponse> Moving(CalculeteRequest calculateRequest) { List <CalculateResponse> calculateResponse = new List <CalculateResponse>(); foreach (var rovers in calculateRequest.Rovers) { X = rovers.RoverXCordinate; Y = rovers.RoverYCordinate; Direction = rovers.Directions; foreach (var move in rovers.RoverMove) { switch (move) { case 'M': this.MoveInSameDirection(); break; case 'L': this.Rotate90Left(); break; case 'R': this.Rotate90Right(); break; default: Console.WriteLine($"Invalid Character {move}"); break; } } bool error = false; if (this.X < 0 || this.X > calculateRequest.MaxPointX || this.Y < 0 || this.Y > calculateRequest.MaxPointY) { error = true; } calculateResponse.Add(new CalculateResponse { RoverName = rovers.RoverName, RoverXCordinate = X, RoverYCordinate = Y, RoverDirection = Direction, Error = error }); } return(calculateResponse); }
public void Test1() { Calculate calculate = new Calculate(); CalculeteRequest calculeteRequest = new CalculeteRequest(); calculeteRequest.MaxPointX = 10; calculeteRequest.MaxPointY = 9; List <Rovers> rover = new List <Rovers>(); rover.Add(new Rovers { RoverName = "First Rover", RoverXCordinate = 2, RoverYCordinate = 3, Directions = Directions.W, RoverMove = "RM" }); calculeteRequest.Rovers = rover; var result = calculate.Moving(calculeteRequest); var actualOutput = $"{result[0].RoverXCordinate} {result[0].RoverYCordinate} {result[0].RoverDirection.ToString()} {result[0].Error}"; var expectedOutput = "2 4 N False"; Assert.AreEqual(expectedOutput, actualOutput); }