public void Send_And_Receive_Standard_Request_With_Error() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); t2.RequestReceived += (s, e) => { CalculateRequest receivedRequest = e.Message.Object as CalculateRequest; t2.SendErrorResponse("Error Message", e.Message.Token); }; Assert.ThrowsException <ResonanceResponseException>(() => { var response = t1.SendRequest <CalculateRequest, CalculateResponse>(new CalculateRequest()); }, "Error Message"); t1.Dispose(true); t2.Dispose(true); Dispose(); }
public void Send_And_Receive_Continuous_Request_With_Error() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); t2.RequestReceived += (s, e) => { ProgressRequest receivedRequest = e.Message.Object as ProgressRequest; Task.Factory.StartNew(() => { for (int i = 0; i < receivedRequest.Count; i++) { t2.SendResponse(new ProgressResponse() { Value = i }, e.Message.Token); Thread.Sleep(receivedRequest.Interval); } t2.SendErrorResponse("Test Exception", e.Message.Token); Thread.Sleep(receivedRequest.Interval); t2.SendResponse(new ProgressResponse() { Value = receivedRequest.Count }, e.Message.Token, new ResonanceResponseConfig() { Completed = true }); }); }; int currentValue = -1; bool isCompleted = false; bool hasError = false; var request = new ProgressRequest() { Count = 100, Interval = TimeSpan.FromMilliseconds(30) }; var subscription = t1.SendContinuousRequest <ProgressRequest, ProgressResponse>(request).Subscribe((response) => { //Response Assert.IsTrue(response.Value == currentValue + 1); currentValue = response.Value; }, (ex) => { //Error hasError = true; Assert.AreEqual(ex.Message, "Test Exception"); }, () => { //Completed isCompleted = true; }); Assert.ThrowsException <ResonanceResponseException>(() => { subscription.Wait(); }, "Test Exception"); Assert.AreEqual(currentValue, request.Count - 1); Assert.IsFalse(isCompleted); Assert.IsTrue(hasError); t1.Dispose(true); t2.Dispose(true); }