public void ToYieldInstruction_ColdObservable_CompletesImmediately()
        {
            var size = 5;
            var observableEnumerator = new TestObservableEnumerator();
            var coroutineEnumerator  = observableEnumerator.CreateColdObservableCoroutineForSize(size);

            coroutineEnumerator.MoveNext();
            var enumerator = coroutineEnumerator.Current as IEnumerator;

            Assert.False(enumerator.MoveNext());
            Assert.True((bool)enumerator.Current);
        }
        public void ToYieldInstruction_HotObservable_YieldsCurrentUntilObservableCompletes()
        {
            var subject = new Subject <bool>();
            var observableEnumerator = new TestObservableEnumerator();
            var coroutineEnumerator  = observableEnumerator.CreateCoroutineEnumeratorFromObservableUsingToYield(subject);

            coroutineEnumerator.MoveNext();
            var enumerator = coroutineEnumerator.Current as IEnumerator;

            Assert.True(enumerator.MoveNext());
            Assert.False((bool)enumerator.Current);

            subject.OnNext(false);
            Assert.True(enumerator.MoveNext());
            Assert.False((bool)enumerator.Current);

            subject.OnNext(true);
            Assert.True(enumerator.MoveNext());
            Assert.True((bool)enumerator.Current);

            subject.OnCompleted();
            Assert.False(enumerator.MoveNext());
        }