예제 #1
0
        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));
        }
예제 #2
0
        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());
        }
예제 #3
0
        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);
        }