public void TestReadGroupAddressByIsNotController() { // Arrange var device = new Mercury203() { Address = 1, }; // Act var result = device.ReadGroupAddress(); do {} while(!result.IsCompleted); // Assert Assert.AreEqual(TransactionStatus.Aborted, result.Stack[result.Stack.Length - 1].Status); }
public void TestReadGroupAddressSuccess() { // Arrange int amount = 1; var msg = new DataMessage(new byte[] { 0, 0, 0, 2 }) { Address = 1, CmdCode = 0x20, MessageType = MessageType.IncomingMessage }; Mock<IDataLinkPort> comPort = new Mock<IDataLinkPort>(); //comPort.Setup(p => p.GetType()).Returns(typeof(IncotexNetworkController)); comPort.Setup(p => p.IsOpen).Returns(true); comPort.Setup(p => p.MessagesToRead) .Returns(() => amount) .Callback(() => amount--); comPort.Setup(p => p.Write(It.IsAny<IMessage>())) .Raises(m => m.MessageReceived += null, new EventArgs()); comPort.Setup(p => p.Read()).Returns(msg); var controller = new IncotexNetworkController(); controller.Connection = comPort.Object; controller.Start(); //controller.Stop(); var device = new Mercury203() { Address = 1, }; controller.Devices.Add(device); // Act var result = device.ReadGroupAddress(); //controller.Write(trans); do { // Ждём выполения комманды } while (!result.IsCompleted); // Assert Assert.AreEqual(TransactionStatus.Completed, result.Stack[result.Stack.Length - 1].Status, "Success"); }
//[ExpectedException(typeof(InvalidOperationException), "")] public void TestReadGroupAddressByControllerIsStopped() { // Arrange var msg = new DataMessage(new byte[] { 0, 0, 0, 2 }) { Address = 1, CmdCode = 0x20, MessageType = MessageType.IncomingMessage }; Mock<IDataLinkPort> comPort = new Mock<IDataLinkPort>(); comPort.Setup(p => p.IsOpen).Returns(true); comPort.Setup(p => p.MessagesToRead).Returns(0); comPort.Setup(p => p.Write(It.IsAny<IMessage>())) .Raises(m => m.MessageReceived += null, new EventArgs()); comPort.Setup(p => p.Read()).Returns(msg); var controller = new IncotexNetworkController(); controller.Connection = comPort.Object; controller.Stop(); // Контроллер остановлен var device = new Mercury203() { Address = 1, }; controller.Devices.Add(device); Type type = null; // Act try { var result = device.ReadGroupAddress(); } catch (Exception ex) { type = ex.GetType(); } // Assert Assert.AreEqual(typeof(InvalidOperationException), type); // Assert //while(true) //{ // Ждём должно быть исключение //} }