예제 #1
0
        public void Broadcaster_Catches_Exception_In_OnComplete()
        {
            var b = new Broadcaster <int>();
            var reflectedValue = -1;

            b.Subscribe(
                x =>
            {
                throw new Exception();
            },
                ex =>
            {
                throw new Exception();
            },
                () =>
            {
                reflectedValue = 1;
                throw new Exception();
            });

            b.Subscribe(x =>
            {
                reflectedValue = x;
            });

            b.OnCompleted();
            Assert.Equal(1, reflectedValue);
        }
예제 #2
0
        public void Broadcaster_Completed_Does_Not_Fire_OnCompleted()
        {
            var b = new Broadcaster <int>();

            int count = 0;

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

            Assert.NotNull(sub);

            //Dispose will call complete once
            b.OnCompleted();

            //ensure it's not called again
            b.OnCompleted();

            Assert.Equal(1, count);
        }
예제 #3
0
        public void Broadcaster_Completed_Subscribe_Does_Not_Add_Observer()
        {
            var b = new Broadcaster <int>();

            b.OnCompleted();

            b.Subscribe(x => { });

            Assert.True(b.IsComplete);
            Assert.False(b.HasObservers);
        }
예제 #4
0
        public void Broadcaster_OnCompleted()
        {
            var b = new Broadcaster <int>();

            bool complete = false;

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

            Assert.NotNull(sub);

            b.OnCompleted();

            Assert.True(complete);
        }
예제 #5
0
        public void DelegateObserver_Disposed_Does_Not_Fire_OnComplete()
        {
            var b      = new Broadcaster <int>();
            int result = 0;

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

            sub.Dispose();

            b.OnCompleted();

            Assert.Equal(0, result);
        }
예제 #6
0
        public void Broadcaster_Completed_Does_Not_Fire_OnNext()
        {
            var b = new Broadcaster <int>();

            int result = -1;

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

            Assert.NotNull(sub);

            b.OnCompleted();
            b.OnNext(2);

            Assert.NotEqual(2, result);
            Assert.Equal(-1, result);
        }