public void TestDisposeMultipleSubjects() { int sum1 = 0; int sum2 = 0; SubEvent1 event1 = new SubEvent1(); SubEvent2 event2 = new SubEvent2(); PubSubSubject <SuperEvent> subject = new PubSubSubject <SuperEvent>(); var disposable1 = subject.Subscribe(Observer.Create <SubEvent1>(x => sum1 += 100)); var disposable2 = subject.Subscribe(Observer.Create <SubEvent2>(x => sum2 += 500)); subject.OnNext(event1); subject.OnNext(event2); subject.OnNext(event2); Assert.Equal(sum1, 100); Assert.Equal(sum2, 1000); // Check that unsubscribing from SubEvent1 does not affect other subscriptions disposable1.Dispose(); subject.OnNext(event1); subject.OnNext(event2); Assert.Equal(sum1, 100); Assert.Equal(sum2, 1500); // Unsubscribe from the remaining event types disposable2.Dispose(); subject.OnNext(event1); subject.OnNext(event2); Assert.Equal(sum1, 100); Assert.Equal(sum2, 1500); }
public void TestDisposeMultipleSubjects() { int sum1 = 0; int sum2 = 0; SubEvent1 event1 = new SubEvent1(); SubEvent2 event2 = new SubEvent2(); PubSubSubject<SuperEvent> subject = new PubSubSubject<SuperEvent>(); var disposable1 = subject.Subscribe(Observer.Create<SubEvent1>(x => sum1 += 100)); var disposable2 = subject.Subscribe(Observer.Create<SubEvent2>(x => sum2 += 500)); subject.OnNext(event1); subject.OnNext(event2); subject.OnNext(event2); Assert.Equal(sum1, 100); Assert.Equal(sum2, 1000); // Check that unsubscribing from SubEvent1 does not affect other subscriptions disposable1.Dispose(); subject.OnNext(event1); subject.OnNext(event2); Assert.Equal(sum1, 100); Assert.Equal(sum2, 1500); // Unsubscribe from the remaining event types disposable2.Dispose(); subject.OnNext(event1); subject.OnNext(event2); Assert.Equal(sum1, 100); Assert.Equal(sum2, 1500); }