예제 #1
0
        public void RoverController_SuccessCommand()
        {
            Guid id = new Guid("ac077fdf-ca63-45b2-9c63-74f73383d8c8");

            RoverCommandRequest request = new RoverCommandRequest
            {
                Commands = "LMMRMMR"
            };
            RoverController      controller = new RoverController();
            RoverCommandResponse response   = controller.PostCommand(id, request);

            Assert.IsNotNull(response.Rover);
            Assert.AreEqual(response.Success, true);
            Assert.AreEqual(response.FinalCoordinates, "3, 7, E");
            Assert.AreEqual(response.Rover.State, RoverState.Active);
        }
예제 #2
0
        public void RoverController_LostCommand()
        {
            Guid id = new Guid("67968965-e69a-420c-a28a-9e7109692140");

            RoverCommandRequest request = new RoverCommandRequest
            {
                Commands = "RMMLMMRMMMM"
            };
            RoverController      controller = new RoverController();
            RoverCommandResponse response   = controller.PostCommand(id, request);

            Assert.IsNotNull(response.Rover);
            Assert.AreEqual(response.Success, false);
            Assert.AreEqual(response.FinalCoordinates, "15, 12, E");
            Assert.AreEqual(response.Rover.State, RoverState.Lost);
        }
예제 #3
0
        public RoverCommandResponse PostCommand(Guid id, RoverCommandRequest request)
        {
            RoverCommandResponse response = new RoverCommandResponse();

            response.Rover = DataContext.Rovers.Where(p => p.Id == id).FirstOrDefault();
            if (response.Rover != null && response.Rover.State == RoverState.Active)
            {
                try
                {
                    RoverCommander commander = new RoverCommander(response.Rover.Id);
                    response.Rover            = commander.Execute(request.Commands);
                    response.FinalCoordinates = $"{response.Rover.Location.X}, {response.Rover.Location.Y}, {response.Rover.Direction.ToString().ElementAt(0)}";
                    return((RoverCommandResponse)response.ReturnWithSuccess());
                }

                catch (Exception ex) {
                    response.FinalCoordinates = $"{response.Rover.Location.X}, {response.Rover.Location.Y}, {response.Rover.Direction.ToString().ElementAt(0)}";
                    return((RoverCommandResponse)response.ReturnWithErrors(ex.Message));
                }
            }
            return(response);
        }