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);
        }
        //TODO: Find a better way to check the results of running a simulation
        public void Simulation_Runs_details_Correctly(int simIndex)
        {
            var simulationDetails = GetSimulationDetails(simIndex);

            var testSimulation = new DefaultSimulation(simulationDetails.simulationBoundary);

            foreach (var RoverEntry in simulationDetails.roverList)
            {
                testSimulation.AddRover(RoverEntry.initialPosition, RoverEntry.instructions);
            }

            var results = testSimulation.RunSimulation();

            var comparedResultList = results.Select((result, index) =>
            {
                var expectedPosition = simulationDetails.roverList[index].ExpectedFinalPosition;
                return(expectedPosition.X == result.X && expectedPosition.Y == result.Y, index);
            });

            foreach (var(resultValue, index) in comparedResultList)
            {
                Assert.True(resultValue, $"There was an issue with Simulation no. {simIndex}. On rover {index}");
            }
        }