/// <summary> /// Actually polls the device /// </summary> /// <param name="serialNumber">The serial number</param> /// <param name="pollIntervals">The intervals to poll for</param> /// <returns>The populated commands</returns> private ICommandList?ExecutePoll(string serialNumber, IEnumerable <PollInterval> pollIntervals) { ICommandList commands = _commandListFactory.Create(); foreach (PollInterval pollInterval in pollIntervals) { try { commands.AddRange(_pollIntervals[pollInterval]); } catch (Exception e) { _logger.LogCritical("Could not add poll intervals"); } } commands.Prepare(); try { _pmCommunicator.Send(serialNumber, commands); return(commands); } catch (Exception e) { _logger.LogError(e, "Exception occurred while sending poll commands to serial number [{SerialNumber}]", serialNumber); } return(null); }
public void Should_Throw_ArgumentOutOfRangeException_And_ReturnStartPosition_When_RoverGetsOutOfPlato() { IPosition startPosition = CurrentFactory.CreateInputObject <IPosition>(); startPosition.X = 3; startPosition.Y = 3; startPosition.Direction = Direction.East; IDriver driver = new Driver.Driver(CurrentPlato, startPosition); ICommandList commandLists = CurrentFactory.CreateInputObject <ICommandList>(); commandLists.AddRange("MMMMMM".Select(p => (CommandType)p).ToArray()); Assert.Throws <ArgumentOutOfRangeException>(() => driver.Drive(commandLists)); Assert.IsTrue(startPosition.Equals(driver.CurrentPosition)); }
public void Should_WorkFine_WhenEverythinkOk_Scenario_2() { IPosition startPosition = CurrentFactory.CreateInputObject <IPosition>(); startPosition.X = 3; startPosition.Y = 3; startPosition.Direction = Direction.East; IDriver driver = new Driver.Driver(CurrentPlato, startPosition); ICommandList commandLists = CurrentFactory.CreateInputObject <ICommandList>(); commandLists.AddRange("MMRMMRMRRM".Select(p => (CommandType)p).ToArray()); IPosition lastPosition = driver.Drive(commandLists); Assert.AreEqual(lastPosition.X, 5); Assert.AreEqual(lastPosition.Y, 1); Assert.AreEqual(lastPosition.Direction, Direction.East); }