public void RoverControlSignal_Should_Be_Created_From_Letter(char controlLetter,
                                                                     RoverControlSignal expectedControlSignal)
        {
            var roverControlSignal = controlLetter.RoverControlSignalFromControlLetter();

            roverControlSignal.ShouldBe(expectedControlSignal);
        }
Пример #2
0
        public void RoverPosition_Should_Be_Changed_By_Control_Signal(RoverPosition position,
                                                                      RoverControlSignal controlSignal, RoverPosition expectedPosition)
        {
            var newPosition = position.CalculateNewPosition(controlSignal);

            newPosition.X.ShouldBe(expectedPosition.X);
            newPosition.Y.ShouldBe(expectedPosition.Y);
            newPosition.Heading.ShouldBe(expectedPosition.Heading);
        }
		public RoverPosition CalculateNewPosition(RoverControlSignal controlSignal)
		{
			return controlSignal switch
			{
				RoverControlSignal.Left => Heading switch
				{
					CardinalCompassPoint.North => new RoverPosition(X, Y, CardinalCompassPoint.West),
					CardinalCompassPoint.East => new RoverPosition(X, Y, CardinalCompassPoint.North),
					CardinalCompassPoint.South => new RoverPosition(X, Y, CardinalCompassPoint.East),
					CardinalCompassPoint.West => new RoverPosition(X, Y, CardinalCompassPoint.South),
					_ => throw new ArgumentOutOfRangeException()
				},