コード例 #1
0
ファイル: RoverTests.cs プロジェクト: lukesmith/RoboTest
        public void changes_direction(RoverInstruction instruction, CameraDirection initialDirection, CameraDirection expectedDirection)
        {
            var rover = new Rover(new Coordinate(0, 0), initialDirection);

            rover.SendInstruction(instruction);

            Assert.AreEqual(expectedDirection, rover.CameraDirection);
        }
コード例 #2
0
        public void GetRoverEntry_SavesValuesProperly()
        {
            var testInstructions = new RoverInstruction[] { RoverInstruction.Left, RoverInstruction.Move };

            var testRover = GetRoverEntry(testInstructions);

            Assert.Equal(testRover.instructions, testInstructions);
            Assert.Equal(testRover.rover, DefaultRover);
            Assert.Equal(testRover.currentPosition, DefaultPosition);
        }
コード例 #3
0
        public void RoverEntry_DeconstructsProperly()
        {
            var testInstructions = new RoverInstruction[] { RoverInstruction.Left, RoverInstruction.Move };

            var testRover = GetRoverEntry(testInstructions);

            var(rover, currentPosition, instructions) = testRover;

            Assert.Equal(instructions, testInstructions);
            Assert.Equal(rover, DefaultRover);
            Assert.Equal(currentPosition, DefaultPosition);
        }
コード例 #4
0
        public Position Move(Position currentPosition, RoverInstruction command)
        {
            switch (command)
            {
            case RoverInstruction.Left:
            case RoverInstruction.Right:
                return(Turn(currentPosition, command));

            default:
                return(MoveForward(currentPosition));
            }
        }
コード例 #5
0
        public void move_returnsAPositionOnTheCurrentHeading_WhenMovingForward(Direction facing, int expectedX, int expectedY)
        {
            const RoverInstruction MOVE = RoverInstruction.Move;

            var initialPosition = GetInitialPosition(facing);
            var testRover       = GetDefaultRover();

            var testPosition = testRover.Move(initialPosition, MOVE);

            Assert.True(testPosition.facing == facing, "Position should remain the same after movement");
            Assert.True(testPosition.X == expectedX, $"when {facing}: X {expectedX} == actualX {testPosition.X}");
            Assert.True(testPosition.Y == expectedY, $"when {facing}: Y {expectedY} == actualY {testPosition.Y}");
        }
コード例 #6
0
        public void Simulation_AddRover_AddsRoversToList()
        {
            var simulationBoundary = new Position(1, 1);
            var createdSimulation  = new DefaultSimulation(simulationBoundary);

            var roverInitialPosition = new Position(0, 0);
            var roverInstructions    = new RoverInstruction[] { RoverInstruction.Left, RoverInstruction.Move };

            createdSimulation.AddRover(roverInitialPosition, roverInstructions);

            var(rover, currentPosition, instructionList) = createdSimulation.roverList[0];

            Assert.IsType <DefaultRover>(rover);
            Assert.Equal(currentPosition, roverInitialPosition);
            Assert.Equal(instructionList, roverInstructions);
        }
コード例 #7
0
        public bool PerformInstruction(RoverInstruction instruction)
        {
            switch (instruction)
            {
            case RoverInstruction.R:
                rover.TurnRight();
                break;

            case RoverInstruction.L:
                rover.TurnLeft();
                break;

            case RoverInstruction.M:
                return(MoveRover());
            }
            return(true);
        }
コード例 #8
0
ファイル: Rover.cs プロジェクト: lukesmith/RoboTest
        public void SendInstruction(RoverInstruction instruction)
        {
            switch (instruction)
            {
                case RoverInstruction.L:
                    this.TurnLeft();

                    break;
                case RoverInstruction.R:
                    this.TurnRight();

                    break;

                case RoverInstruction.M:
                    {
                        this.MoveRover();
                        break;
                    }
            }
        }
コード例 #9
0
        private Position Turn(Position currentPosition, RoverInstruction turnDirection)
        {
            int facing = 0;

            switch (turnDirection)
            {
            case RoverInstruction.Left:
                facing = (int)currentPosition.facing - 1;
                break;

            case RoverInstruction.Right:
                facing = (int)currentPosition.facing + 1;
                break;
            }

            facing = facing < 0 ? 3 : facing;

            Direction newFacing = (Direction)(facing % 4);

            return(new Position(currentPosition.X, currentPosition.Y, newFacing));
        }
コード例 #10
0
        public void ConvertValueToInstruction_ConvertsToInstruction_WhenValidValueGiven(char valueToConvert, RoverInstruction expectedInstruction)
        {
            var conversionResult = RoverInstructions.ConvertValueToInstruction(valueToConvert);

            Assert.True(conversionResult == expectedInstruction);
        }
コード例 #11
0
        public void move_CanTurnProperly_WhenTurningLeftAndRight(Direction currentDirection, RoverInstruction turnDirection, Direction expectedFacing)
        {
            var testRover    = GetDefaultRover();
            var testPosition = GetInitialPosition(currentDirection);

            Position movementResult = testRover.Move(testPosition, turnDirection);

            Assert.True(movementResult.facing == expectedFacing);;
        }