Beispiel #1
0
        public void AsyncBroacaster_Dispose_Does_Not_Fire_OnCompleted()
        {
            var b          = new AsyncBroadcaster <int>();
            var resetEvent = new ManualResetEvent(false);

            int count = 0;

            var sub = b.Subscribe(x => { }, () =>
            {
                count++;
                resetEvent.Set();
            });

            Assert.NotNull(sub);

            //Dispose will call complete once
            b.Dispose();
            resetEvent.WaitOne();

            //ensure it's not called again
            resetEvent.Reset();
            b.OnCompleted();
            resetEvent.WaitOne(200);

            Assert.Equal(1, count);
        }
Beispiel #2
0
        public void AsyncBroadcaster_Dispose()
        {
            var b = new AsyncBroadcaster <int>();

            b.Dispose();
            Assert.True(b.IsDisposed);
        }
Beispiel #3
0
        public void AsyncBroacaster_Disposed_HasObservers()
        {
            var b = new AsyncBroadcaster <int>();

            var sub = b.Subscribe(x => { });

            Assert.NotNull(sub);

            b.Dispose();

            Assert.False(b.HasObservers);
        }
Beispiel #4
0
        public void AsyncBroadcaster_Disposed_Subscribe_Throws_Exception()
        {
            var b = new AsyncBroadcaster <int>();

            b.Dispose();

            Assert.True(b.IsComplete);
            Assert.True(b.IsDisposed);

            Assert.Throws <ObjectDisposedException>(() => b.Subscribe(x => { }));

            Assert.False(b.HasObservers);
        }
Beispiel #5
0
        public void AsyncBroacaster_Disposed_Does_Not_Fire_OnNext()
        {
            var b = new AsyncBroadcaster <int>();

            int result = -1;

            var sub = b.Subscribe(x => { result = x; });

            Assert.NotNull(sub);

            b.Dispose();
            b.OnNext(2);

            Assert.NotEqual(2, result);
            Assert.Equal(-1, result);
        }
Beispiel #6
0
        public void AsyncBroacaster_Disposed_OnCompleted()
        {
            var b          = new AsyncBroadcaster <int>();
            var resetEvent = new ManualResetEvent(false);

            bool complete = false;

            var sub = b.Subscribe(x => { }, () =>
            {
                complete = true;
                resetEvent.Set();
            });

            Assert.NotNull(sub);

            b.Dispose();
            resetEvent.WaitOne();

            Assert.True(complete);
        }
Beispiel #7
0
        public void AsyncBroacaster_Disposed_Does_Not_Fire_OnError()
        {
            var b          = new AsyncBroadcaster <int>();
            var resetEvent = new ManualResetEvent(false);

            var       exception = new Exception("HAI");
            Exception result    = null;

            var sub = b.Subscribe(x => { }, x =>
            {
                result = x;
            });

            Assert.NotNull(sub);

            b.Dispose();
            resetEvent.WaitOne(200);

            b.OnError(exception);
            resetEvent.WaitOne(200);

            Assert.Null(result);
        }