Example #1
0
        public void RegisterObservable_SubscribeBeforeUnregistering_NoEventsAfterUnregister()
        {
            var subscriptions = new CompositeDisposable();
            var pubSub        = new RxEventAggregator();
            var calledCount   = 0;

            var subject      = new BehaviorSubject <TestEvent>(new TestEvent());
            var registration = pubSub.Register <TestEvent>(subject);

            subscriptions.Add(registration);

            subject.OnNext(new TestEvent());

            subscriptions.Add(pubSub.GetEvent <TestEvent>().Subscribe(e =>
            {
                calledCount++;
            }));

            registration.Dispose();

            subject.OnNext(new TestEvent());

            subscriptions.Dispose();

            Assert.AreEqual(1, calledCount);
        }
Example #2
0
        public void RegisterObservable_WarmObservableWithRegisteredConversionSubscribedAfterFiring_IsReceivedImmediately()
        {
            var subscriptions = new CompositeDisposable();
            var pubSub        = new RxEventAggregator();
            var calledCount   = 0;

            var subject = new Subject <TestEvent>();

            subscriptions.Add(pubSub.Register <TestEvent>(subject.Replay(1).RefCount()));

            subject.OnNext(new TestEvent());

            // Note, if you share from this point on you're creating a new 'root' for new subscriptions
            // which will not include the replay
            var newStream = pubSub.GetEvent <TestEvent>().Select(t => new TestEvent2());

            pubSub.Register <TestEvent2>(newStream);

            subscriptions.Add(pubSub.GetEvent <TestEvent2>().Subscribe(e =>
            {
                calledCount++;
            }));

            subscriptions.Dispose();

            Assert.AreEqual(1, calledCount);
        }
Example #3
0
        public void Publish_SimpleEventOfType_IsReceived()
        {
            var subscriptions = new CompositeDisposable();
            var pubSub        = new RxEventAggregator();
            var calledCount   = 0;

            subscriptions.Add(pubSub.GetEventsOfType <ITestEvent>().Subscribe(e =>
            {
                calledCount++;
            }));

            pubSub.Publish(new TestEvent());

            subscriptions.Dispose();

            Assert.AreEqual(1, calledCount);
        }
Example #4
0
        public void RegisterObservable_ColdObservableSubscribedBefore_IsReceived()
        {
            var subscriptions = new CompositeDisposable();
            var pubSub        = new RxEventAggregator();
            var calledCount   = 0;

            subscriptions.Add(pubSub.GetEvent <TestEvent>().Subscribe(e =>
            {
                calledCount++;
            }));

            var observable = new[] { new TestEvent() }.ToObservable();

            subscriptions.Add(pubSub.Register <TestEvent>(observable));

            subscriptions.Dispose();

            Assert.AreEqual(1, calledCount);
        }
Example #5
0
        public void RegisterObservable_HotObservablePublishedAfter_IsReceived()
        {
            var subscriptions = new CompositeDisposable();
            var pubSub        = new RxEventAggregator();
            var calledCount   = 0;

            var subject = new Subject <TestEvent>();

            subscriptions.Add(pubSub.Register <TestEvent>(subject));

            subscriptions.Add(pubSub.GetEvent <TestEvent>().Subscribe(e =>
            {
                calledCount++;
            }));

            subject.OnNext(new TestEvent());

            subscriptions.Dispose();

            Assert.AreEqual(1, calledCount);
        }
Example #6
0
        public void RegisterObservable_WarmObservableSubscribedAfterFiring_IsReceivedImmediately()
        {
            var subscriptions = new CompositeDisposable();
            var pubSub        = new RxEventAggregator();
            var calledCount   = 0;

            var subject = new Subject <TestEvent>();

            subscriptions.Add(pubSub.Register <TestEvent>(subject.Replay(1).RefCount()));

            subject.OnNext(new TestEvent());

            subscriptions.Add(pubSub.GetEvent <TestEvent>().Subscribe(e =>
            {
                calledCount++;
            }));

            subscriptions.Dispose();

            Assert.AreEqual(1, calledCount);
        }