public void MultiSubjectProxy_Untyped_AsObserver() { Run(client => { var env = new TestExecutionEnvironment(); var ctx = client.CreateContext(env); var inputUri = new Uri("test://stream/input"); var outputUri = new Uri("test://stream/output"); var sf = env.Reactive.GetStreamFactory <int, int>(new Uri("rx://subject/inner/untyped")); var inputStream = sf.Create(inputUri, null); var outputStream = sf.Create(outputUri, null); var inputProxy = new MultiSubjectProxy(inputUri); var outputProxy = new MultiSubjectProxy(outputUri); var observer = new MockObserver <int>(client); var inputSub = SubscribeRoot(inputProxy.GetObservable <int>(), outputProxy.GetObserver <int>()); var outputSub = SubscribeRoot(outputProxy.GetObservable <int>(), observer); new SubscriptionInitializeVisitor(inputSub).Initialize(ctx); new SubscriptionInitializeVisitor(outputSub).Initialize(ctx); Schedule(client, 10, () => inputStream.OnNext(1)); Schedule(client, 20, () => inputStream.OnNext(2)); Schedule(client, 30, () => inputStream.OnNext(3)); client.Start(); observer.Messages.AssertEqual( OnNext(10, 1), OnNext(20, 2), OnNext(30, 3) ); }); }
public void MultiSubjectProxy_AsObserver_OnCompleted() { Run(client => { var env = new TestExecutionEnvironment(); var ctx = client.CreateContext(env); var inputUri = new Uri("test://stream/input"); var outputUri = new Uri("test://stream/output"); var sf = env.Reactive.GetStreamFactory <int, int>(new Uri("rx://subject/inner")); var inputStream = sf.Create(inputUri, null); var outputStream = sf.Create(outputUri, null); var inputProxy = new MultiSubjectProxy <int, int>(inputUri); var outputProxy = new MultiSubjectProxy <int, int>(outputUri); var observer = new MockObserver <int>(client); var inputSub = SubscribeRoot(inputProxy, outputProxy.CreateObserver()); var outputSub = SubscribeRoot(outputProxy, observer); new SubscriptionInitializeVisitor(inputSub).Initialize(ctx); new SubscriptionInitializeVisitor(outputSub).Initialize(ctx); Schedule(client, 10, () => inputStream.OnCompleted()); client.Start(); observer.Messages.AssertEqual( OnCompleted <int>(10) ); }); }
public void MultiSubjectProxy_AsObservable() { Run(client => { var env = new TestExecutionEnvironment(); var ctx = client.CreateContext(env); var uri = new Uri("test://stream"); var sf = env.Reactive.GetStreamFactory <int, int>(new Uri("rx://subject/inner")); var stream = sf.Create(uri, null); var proxy = new MultiSubjectProxy <int, int>(uri); var observer = new MockObserver <int>(client); var sub = ((IObservable <int>)proxy).Subscribe(observer); new SubscriptionInitializeVisitor((ISubscription)sub).Initialize(ctx); Schedule(client, 10, () => stream.OnNext(1)); Schedule(client, 20, () => stream.OnNext(2)); Schedule(client, 30, () => stream.OnNext(3)); client.Start(); observer.Messages.AssertEqual( OnNext(10, 1), OnNext(20, 2), OnNext(30, 3) ); }); }
public void MultiSubjectProxy_Untyped_AsObserver_AsSubscription() { Run(client => { var env = new TestExecutionEnvironment(); var ctx = client.CreateContext(env); var uri = new Uri("test://subject"); var observer = new SubscriptionObserver <int>(); var subject = new TestSubject(observer); env.AddArtifact(uri, subject); var proxy = new MultiSubjectProxy(uri); var sub = SubscribeRoot(new Never <int>(), proxy.GetObserver <int>()); new SubscriptionInitializeVisitor(sub).Initialize(ctx); Assert.IsTrue(observer.IsAcceptCalled); sub.Dispose(); Assert.IsTrue(observer.IsDisposeCalled); }); }
public void MultiSubjectProxy_Untyped_ArgumentChecks() { AssertEx.ThrowsException <ArgumentNullException>(() => _ = new MultiSubjectProxy(null), ex => Assert.AreEqual("uri", ex.ParamName)); }