public ActionResult <Rover> LaunchRover([FromQuery] Position position) { if (position == null) { return(BadRequest("No position supplied")); } if (MissionControl._plateau == null) { return(BadRequest("There's no plateu, rover can not be deployed, find the plateu first!")); } if (MissionControl._plateau.Width < position.X + 1) { ModelState.AddModelError(nameof(Position.X), "There's no such X coordinate on the plateu"); } if (MissionControl._plateau.Height < position.Y + 1) { ModelState.AddModelError(nameof(Position.Y), "There's no such Y coordinate on the plateu"); } if (ModelState.IsValid) { return(MissionControl.LaunchRover(position)); } return(BadRequest(ModelState)); }
public void LaunchRoverCreatesNewRover() { _missionControl = new MissionControl(_mockRoverManager, null); _mockRoverManager.Stub(x => x.CreateRover(0, 0, 'N')); _mockRoverManager.Stub(x => x.CurrentRover()).Return(new LandRover()); _missionControl.LaunchRover(new[] { "0", "0", "N" }); _mockRoverManager.AssertWasCalled(x => x.CreateRover(0, 0, 'N')); Assert.IsInstanceOf <IRover>(_mockRoverManager.CurrentRover()); }
public void ValidateMoves(Position originalPosition, Command[] commands, Position expected, bool hasError) { var rover = MissionControl.LaunchRover(originalPosition); // Act var result = (CommandResult)null; commands.ToList().ForEach(x => { result = MissionControl.Move(rover.Id, x); }); var resultError = !string.IsNullOrEmpty(result.Error); //Assert Assert.AreEqual(expected, result.Position); Assert.AreEqual(hasError, resultError); }