Example #1
0
        public JsonResult Calculete(CalculeteRequest calculeteRequest)
        {
            ICalculate calculate            = _calculate;
            List <CalculateResponse> result = calculate.Moving(calculeteRequest);

            return(new JsonResult(result));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }