private static IEnumerable <TestCaseData> MoveNextAfterResetCases()
        {
            //No handlers
            var enumerator1 = new ConnectedProjectionHandlerEnumerator <object>(new ConnectedProjectionHandler <object> [0]);

            yield return(new TestCaseData(enumerator1, false));

            yield return(new TestCaseData(enumerator1, false));

            //1 handler
            var enumerator2 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(TaskFactory())
            });

            yield return(new TestCaseData(enumerator2, true));

            yield return(new TestCaseData(enumerator2, true));

            //2 handlers
            var enumerator3 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(TaskFactory()),
                HandlerFactory(TaskFactory())
            });

            yield return(new TestCaseData(enumerator3, true));

            yield return(new TestCaseData(enumerator3, true));
        }
        private static IEnumerable <TestCaseData> CurrentStartedCases()
        {
            //No handlers - not applicable

            //1 handler
            var task1       = TaskFactory();
            var enumerator2 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(task1)
            });

            yield return(new TestCaseData(enumerator2, task1));

            //2 handlers
            var task2       = TaskFactory();
            var task3       = TaskFactory();
            var enumerator3 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(task2),
                HandlerFactory(task3)
            });

            yield return(new TestCaseData(enumerator3, task2));

            yield return(new TestCaseData(enumerator3, task3));
        }
        public void MoveNextReturnsExpectedResult(
            ConnectedProjectionHandlerEnumerator <object> sut, bool expected)
        {
            var result = sut.MoveNext();

            Assert.That(result, Is.EqualTo(expected));
        }
        private static IEnumerable <TestCaseData> CurrentCompletedCases()
        {
            //No handlers
            var enumerator1 = new ConnectedProjectionHandlerEnumerator <object>(new ConnectedProjectionHandler <object> [0]);

            while (enumerator1.MoveNext())
            {
            }
            yield return(new TestCaseData(enumerator1));

            //1 handler
            var enumerator2 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(TaskFactory())
            });

            while (enumerator2.MoveNext())
            {
            }
            yield return(new TestCaseData(enumerator2));

            //2 handlers
            var enumerator3 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(TaskFactory()),
                HandlerFactory(TaskFactory())
            });

            while (enumerator3.MoveNext())
            {
            }
            yield return(new TestCaseData(enumerator3));
        }
        public void CurrentReturnsExpectedResultWhenStarted(
            ConnectedProjectionHandlerEnumerator <object> sut, Task expected)
        {
            sut.MoveNext();

            var result = sut.Current.Handler(null, null, CancellationToken.None);

            Assert.That(result, Is.EqualTo(expected));
        }
        private static IEnumerable <TestCaseData> CurrentNotStartedCases()
        {
            //No handlers
            var enumerator1 = new ConnectedProjectionHandlerEnumerator <object>(new ConnectedProjectionHandler <object> [0]);

            yield return(new TestCaseData(enumerator1));

            //1 handler
            var enumerator2 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(TaskFactory())
            });

            yield return(new TestCaseData(enumerator2));

            //2 handlers
            var enumerator3 = new ConnectedProjectionHandlerEnumerator <object>(new[]
            {
                HandlerFactory(TaskFactory()),
                HandlerFactory(TaskFactory())
            });

            yield return(new TestCaseData(enumerator3));
        }
 public void CurrentReturnsExpectedResultWhenCompleted(
     ConnectedProjectionHandlerEnumerator <object> sut)
 {
     Assert.Throws <InvalidOperationException>(
         () => { var _ = sut.Current; });
 }
 public void ResetDoesNotThrow(ConnectedProjectionHandlerEnumerator <object> sut)
 {
     Assert.DoesNotThrow(sut.Reset);
 }