public void TestHelloDialogSendRequestWithTimeout()
        {
            TimeSpan timeout = TimeSpan.FromMilliseconds(1);

            Mock <IMessageStreamReader> messageStreamReaderMock = new Mock <IMessageStreamReader>();

            messageStreamReaderMock.Setup(x => x.Subscribe(It.IsAny <IObserver <IMessageEnvelope> >())).Callback <IObserver <IMessageEnvelope> >(async(IObserver <IMessageEnvelope> observer) =>
            {
                await Task.Delay(timeout.Add(TimeSpan.FromMilliseconds(1)));
            });

            IMessageStreamWriter messageStreamWriter = new XmlMessageStreamWriter(Stream.Null);

            using (IPharmacyInventorySystemDialogProvider dialogProvider = new PharmacyInventorySystemDialogProvider())
            {
                dialogProvider.Connect(new MessageTransmitter(messageStreamReaderMock.Object,
                                                              messageStreamWriter,
                                                              Stream.Null,
                                                              timeout));

                Assert.ThrowsException <MessageTransmissionException>(() =>
                {
                    dialogProvider.HelloDialog.SendRequest(( HelloRequest )(TestData.HelloRequest.Object.Message));
                });
            }
        }
        public void TestHelloDialogSendRequestWithoutResponse()
        {
            IMessageStreamReader messageStreamReader = new XmlMessageStreamReader(Stream.Null);
            IMessageStreamWriter messageStreamWriter = new XmlMessageStreamWriter(Stream.Null);

            using (IPharmacyInventorySystemDialogProvider dialogProvider = new PharmacyInventorySystemDialogProvider())
            {
                dialogProvider.Connect(new MessageTransmitter(messageStreamReader, messageStreamWriter, Stream.Null));

                Assert.ThrowsException <MessageTransmissionException>(() =>
                {
                    dialogProvider.HelloDialog.SendRequest(( HelloRequest )(TestData.HelloRequest.Object.Message));
                });
            }
        }
        public void TestHelloDialogSendRequest()
        {
            Mock <IMessageTransmitter> messageTransmitterMock = new Mock <IMessageTransmitter>();

            messageTransmitterMock.Setup(x => x.SendRequest <HelloRequest, HelloResponse>(It.IsAny <HelloRequest>())).Returns <HelloRequest>(( HelloRequest request ) =>
            {
                return(( HelloResponse )(TestData.HelloResponse.Object.Message));
            });

            using (IPharmacyInventorySystemDialogProvider dialogProvider = new PharmacyInventorySystemDialogProvider())
            {
                dialogProvider.Connect(messageTransmitterMock.Object);

                HelloResponse response = dialogProvider.HelloDialog.SendRequest(( HelloRequest )(TestData.HelloRequest.Object.Message));

                Assert.AreEqual(TestData.HelloResponse.Object.Message, response);
            }
        }