public void Receives_Bind_Transmitter_Resp() { var e = new ManualResetEvent(false); var data = new byte[] { 0x00, 0x00, 0x00, 0x17, // length 0x80, 0x00, 0x00, 0x02, // command 0x00, 0x00, 0x00, 0x00, // status 0x00, 0x00, 0x00, 0x20, // sequence 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x00 // system ID }; var expectedPdu = new BindTransmitterResponse(SmppStatus.Ok, 32, "System"); PduReceiver receiver = null; var handler = new Mock<IPduReceivedHandler>(); handler.Setup(h => h.HandlePdu(It.IsAny<BindTransmitterResponse>())) .Callback(() => e.Set()); receiver = new PduReceiver( new MemoryStream(data), handler.Object); receiver.Start(); e.WaitOne(); handler.Verify(h => h.HandlePdu(expectedPdu)); receiver.Stop(); }
public void Serializes_Pdu() { var expectedResult = new byte[] { 0x00, 0x00, 0x00, 0x17, // length 0x80, 0x00, 0x00, 0x02, // command 0x00, 0x00, 0x00, 0x00, // status 0x00, 0x00, 0x00, 0x20, // sequence 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x00 // system ID }; var pdu = new BindTransmitterResponse( SmppStatus.Ok, 32, "System"); var serializer = new BindTransmitterResponseSerializer(); var result = serializer.Serialize(pdu); CollectionAssert.AreEqual(expectedResult, result); }
void IPduReceivedHandler.HandlePdu(BindTransmitterResponse pdu) { var task = _taskRegistry.Unregister(pdu.SequenceNumber); if (task == null) return; if (pdu.Status != SmppStatus.Ok) { var bindException = new Exception("The bind operation failed with error code: " + pdu.Status); task.SetException(bindException); } else { _state = SessionState.BoundTransmitter; task.SetResult(new BindResult(pdu.SystemId)); } }