public RobotEngine(Position startingPosition) { if (startingPosition == null) { startingPosition = Position.AtX(0).AtY(0); } currentAbsolutePosition = startingPosition; }
public void Can_create_engine_with_start_position_as_current_position(int x, int y) { var fixture = new Fixture(); fixture.startingPostion = Position.AtX(x).AtY(y); var sut = fixture.CreateSUT(); Assert.AreEqual(x, sut.CurrentAbsolutePosition.X, "Inspecting X"); Assert.AreEqual(y, sut.CurrentAbsolutePosition.Y, "Inspecting Y"); }
public void Can_move_robot(int startX, int startY, int deltaX, int deltaY, int expectedX, int expectedY) { var fixture = new Fixture(); fixture.startingPostion = Position.AtX(startX).AtY(startY); var sut = fixture.CreateSUT(); sut.MoveDelta(deltaX, deltaY); Assert.AreEqual(expectedX, sut.CurrentAbsolutePosition.X, "Inspecting X"); Assert.AreEqual(expectedY, sut.CurrentAbsolutePosition.Y, "Inspecting Y"); }
public void Cannot_conitnue_clean_more_than_grid_limit_east() { var fixture = new Fixture(); fixture.Engine = new EngineDouble( startPosition: Position.AtX(0).AtY(0), validPositionEvaluator: p => p.X < 5); var sut = fixture.CreateSUT(); sut.CleanEast(10); Assert.AreEqual(5, sut.CleanedStations); }
public void Can_report_clean_if_robot_could_clean_south() { var fixture = new Fixture(); fixture.Engine = new EngineDouble( startPosition: Position.AtX(0).AtY(0), validPositionEvaluator: p => true, cleaningAtPositionEvaluator: p => p.Y > -5); var sut = fixture.CreateSUT(); sut.CleanSouth(10); Assert.AreEqual(5, sut.CleanedStations); }
public EngineDouble() : this(Position.AtX(0).AtY(0), p => true, p => true) { }