public void TestHelloDialogSendResponse() { using (MemoryStream stream = new MemoryStream()) { Mock <IMessageStreamReader> messageStreamReaderMock = new Mock <IMessageStreamReader>(); IMessageStreamWriter messageStreamWriter = new XmlMessageStreamWriter(stream); using (IStorageSystemDialogProvider dialogProvider = new StorageSystemDialogProvider()) { dialogProvider.Connect(new MessageTransmitter(messageStreamReaderMock.Object, messageStreamWriter, stream)); dialogProvider.HelloDialog.SendResponse(( HelloResponse )(TestData.HelloResponse.Object.Message)); stream.Position = 0; using (IMessageStreamReader messageStreamReader = new XmlMessageStreamReader(stream)) { Mock <IObserver <IMessageEnvelope> > observerMock = new Mock <IObserver <IMessageEnvelope> >(); observerMock.Setup(x => x.OnNext(It.IsAny <IMessageEnvelope>())).Callback <IMessageEnvelope>(( IMessageEnvelope value ) => { Assert.AreEqual(TestData.HelloResponse.Object.Message, value.Message); }); messageStreamReader.Subscribe(observerMock.Object); } } } }
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 TestSubscriptionOfMultipleObservers() { using (IMessageStreamReader streamReader = new XmlMessageStreamReader(this.BaseStream)) { Mock <IObserver <IMessageEnvelope> > observerMock1 = new(); Mock <IObserver <IMessageEnvelope> > observerMock2 = new(); using (ManualResetEventSlim observerMock1Sync = new ManualResetEventSlim()) { using (ManualResetEventSlim observerMock2Sync = new ManualResetEventSlim()) { observerMock1.Setup(x => x.OnCompleted()).Callback(() => { observerMock1Sync.Set(); }); observerMock2.Setup(x => x.OnCompleted()).Callback(() => { observerMock2Sync.Set(); }); IConnectableObservable <IMessageEnvelope> observable = (from messageEnvelope in streamReader select messageEnvelope).Publish(); observable.Subscribe(observerMock1.Object); observable.Subscribe(observerMock2.Object); observable.Connect(); observerMock1Sync.Wait(); observerMock2Sync.Wait(); observerMock1.Verify(x => x.OnNext(It.IsAny <IMessageEnvelope>()), Times.Exactly(this.Messages.Count)); observerMock2.Verify(x => x.OnNext(It.IsAny <IMessageEnvelope>()), Times.Exactly(this.Messages.Count)); } } } }
public void TestSubscriptionOfSingleObserver() { using (IMessageStreamReader streamReader = new XmlMessageStreamReader(this.BaseStream)) { Mock <IObserver <IMessageEnvelope> > observerMock = new Mock <IObserver <IMessageEnvelope> >(); using (ManualResetEventSlim sync = new() ) { observerMock.Setup(x => x.OnCompleted()).Callback(() => { sync.Set(); }); using (IDisposable subscription = streamReader.Subscribe(observerMock.Object)) { sync.Wait(); observerMock.Verify(x => x.OnNext(It.IsAny <IMessageEnvelope>()), Times.Exactly(this.Messages.Count)); Assert.IsNotNull(subscription); } } } }