示例#1
0
        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);
                }
            }
        }
示例#2
0
        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));
        }