public void AsyncReactiveObserverBase_OnCompleted()
        {
            var s = new MyAsyncReactiveObserver <int>();

            var done = false;

            s.OnCompletedAsyncImpl = token => { done = true; return(Task.CompletedTask); };

            s.OnCompletedAsync().Wait();

            Assert.IsTrue(done);
        }
        public void AsyncReactiveObserverBase_OnNext()
        {
            var s = new MyAsyncReactiveObserver <int>();

            var y = 0;

            s.OnNextAsyncImpl = (x, token) => { y = x; return(Task.CompletedTask); };

            s.OnNextAsync(42).Wait();

            Assert.AreEqual(42, y);
        }
        public void AsyncReactiveObserverBase_OnError()
        {
            var s = new MyAsyncReactiveObserver <int>();

            var err = default(Exception);

            s.OnErrorAsyncImpl = (e, token) => { err = e; return(Task.CompletedTask); };

            var ex = new Exception();

            s.OnErrorAsync(ex).Wait();

            Assert.AreSame(ex, err);
        }
        public void AsyncReactiveObserverBase_OnError_ArgumentChecking()
        {
            var s = new MyAsyncReactiveObserver <int>();

            Assert.ThrowsException <ArgumentNullException>(() => s.OnErrorAsync(null).Wait());
        }