public void Invalid_builds_throw(string input) { Assert.Throws <ArgumentException>(() => { var plateau = new MarsRoverBuilder(input).Build(); }); }
public void Plateau_height_is_set_up_correctly_when_building(string input, int expectedHeight) { // act var plateau = new MarsRoverBuilder(input).Build(); // assert Assert.AreEqual(expectedHeight, plateau.Height); }
public void Plateau_width_is_set_up_correctly_when_building(string input, int expectedWidth) { // act var plateau = new MarsRoverBuilder(input).Build(); // assert Assert.AreEqual(expectedWidth, plateau.Width); }
public void Rover_initial_positions_are_set_up_on_build() { // arrange var input = "5 5\n\n1 2 N\n\nLMLMLMLMM\n\n3 3 E\n\nMMRMMRMRRM"; var firstRoverPosition = new Position(1, 2, Position.Facing.N); // act var plateau = new MarsRoverBuilder(input).Build(); // assert Assert.AreEqual(firstRoverPosition, plateau.Rovers.First().Position); }
public void Simulate_returns_false_when_no_steps_remain() { // arrange var input = "5 5\n\n1 2 N\n\nLMLMLMLMM\n\n3 3 E\n\nMMRMMRMRRM"; var plateau = new MarsRoverBuilder(input).Build(); plateau.Simulate(9); // act var simulationComplete = plateau.Simulate(10); // assert Assert.IsTrue(simulationComplete); }
public void Multiple_rovers_will_have_their_positions_set_on_build() { // arrange var input = "5 5\n\n1 2 N\n\nLMLMLMLMM\n\n3 3 E\n\nMMRMMRMRRM\n\n1 5 S\n\nMMRMMRMRRM"; var secondRoverPosition = new Position(3, 3, Position.Facing.E); var thirdRoverPosition = new Position(1, 5, Position.Facing.S); var positions = new List <Position>() { secondRoverPosition, thirdRoverPosition }; // act var plateau = new MarsRoverBuilder(input).Build(); // assert CollectionAssert.AreEqual(plateau.Rovers.Skip(1).Select(r => r.Position).ToList(), positions); }
public void Simulate_runs_1_step_when_stipulated() { // arrange var input = "5 5\n\n1 2 N\n\nLMLMLMLMM\n\n3 3 E\n\nMMRMMRMRRM"; var plateau = new MarsRoverBuilder(input).Build(); // act plateau.Simulate(1); // assert var expectedPositions = new List <Position>() { new Position(1, 2, Position.Facing.W), new Position(3, 3, Position.Facing.E) }; CollectionAssert.AreEqual(expectedPositions, plateau.Rovers.Select(r => r.Position)); }
public void Simulate_runs_all_rover_commands() { // arrange var input = "5 5\n\n1 2 N\n\nLMLMLMLMM\n\n3 3 E\n\nMMRMMRMRRM"; var plateau = new MarsRoverBuilder(input).Build(); // act plateau.Simulate(); // assert var expectedPositions = new List <Position>() { new Position(1, 3, Position.Facing.N), new Position(5, 1, Position.Facing.E) }; CollectionAssert.AreEqual(expectedPositions, plateau.Rovers.Select(r => r.Position)); }
public void Simulate_handles_overshooting_of_simulation_gracefully() { // arrange var input = "5 5\n\n1 2 N\n\nLMLMLMLMM\n\n3 3 E\n\nMMRMMRMRRM"; var plateau = new MarsRoverBuilder(input).Build(); plateau.Simulate(9); // act plateau.Simulate(11); // assert var expectedPositions = new List <Position>() { new Position(1, 3, Position.Facing.N), new Position(5, 1, Position.Facing.E) }; CollectionAssert.AreEqual(expectedPositions, plateau.Rovers.Select(r => r.Position)); }
public void Simulate_finishes_simulation_when_all_steps_have_been_ran_in_sequence() { // arrange var input = "5 5\n\n1 2 N\n\nLMLMLMLMM\n\n3 3 E\n\nMMRMMRMRRM"; var plateau = new MarsRoverBuilder(input).Build(); plateau.Simulate(9); // act plateau.Simulate(10); // assert var expectedPositions = new List <Position>() { new Position(1, 3, Position.Facing.N), new Position(5, 1, Position.Facing.E) }; CollectionAssert.AreEqual(expectedPositions, plateau.Rovers.Select(r => r.Position)); }
public void Rovers_build_with_commands_in_the_same_order_as_the_input() { // arrange var input = "5 5\n\n1 2 N\n\nLMRM"; var expectedCommandTypes = new List <Type>() { typeof(TurnLeftCommand), typeof(MoveCommand), typeof(TurnRightCommand), typeof(MoveCommand) }; // act var plateau = new MarsRoverBuilder(input).Build(); // assert var actualCommandTypes = plateau.Rovers.First().Commands.Select(c => c.GetType()).ToList(); CollectionAssert.AreEqual(expectedCommandTypes, actualCommandTypes); }