public void ProcessMoves() { while (_commandsQueue.Count() != 0) { var command = _commandsQueue.Dequeue(); if (command.Direction == RelativeDirection.Forward) { var newCoordinates = _position.ProcessMovement(command.Distance); if (!_terrain.WithinPerimeter(newCoordinates)) { _commandsQueue.Clear(); } else { _position.ExecuteMovement(newCoordinates); } } else { _position.ExecuteTurn(command); } } }
public void ExceedLimit_ExpectLimit() { _sut.Queue(1); _sut.Queue(2); _sut.Queue(3); _sut.Queue(4); _sut.Queue(5); _sut.Queue(6); Assert.AreEqual(5, _sut.Count()); Assert.That(_sut, Has.Exactly(1).Matches <int>(x => x == 1)); Assert.That(_sut, Has.Exactly(1).Matches <int>(x => x == 2)); Assert.That(_sut, Has.Exactly(1).Matches <int>(x => x == 3)); Assert.That(_sut, Has.Exactly(1).Matches <int>(x => x == 4)); Assert.That(_sut, Has.Exactly(1).Matches <int>(x => x == 5)); Assert.That(_sut, Has.Exactly(0).Matches <int>(x => x == 6)); }