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

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

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

            //1 handler
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(CommandFactory())
            });

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

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

            //2 handlers
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(CommandFactory()),
                HandlerFactory(CommandFactory())
            });

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

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

            //1 handler
            var command1    = CommandFactory();
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(command1)
            });

            yield return(new TestCaseData(enumerator2, new[]
            {
                command1
            }));

            //2 handlers
            var command2    = CommandFactory();
            var command3    = CommandFactory();
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(command2),
                HandlerFactory(command3)
            });

            yield return(new TestCaseData(enumerator3, new[]
            {
                command2
            }));

            yield return(new TestCaseData(enumerator3, new[]
            {
                command3
            }));
        }
        public void MoveNextReturnsExpectedResult(
            SqlProjectionHandlerEnumerator sut, bool expected)
        {
            var result = sut.MoveNext();

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

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

            //1 handler
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(CommandFactory())
            });

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

            //2 handlers
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(CommandFactory()),
                HandlerFactory(CommandFactory())
            });

            while (enumerator3.MoveNext())
            {
            }
            yield return(new TestCaseData(enumerator3));
        }
        public void CurrentReturnsExpectedResultWhenStarted(
            SqlProjectionHandlerEnumerator sut, SqlNonQueryCommand[] expected)
        {
            sut.MoveNext();

            var result = sut.Current.Handler(null);

            Assert.That(result, Is.EqualTo(expected));
        }
        public void CurrentReturnsExpectedResultWhenStarted(
            SqlProjectionHandlerEnumerator sut, SqlNonQueryCommand[] expected)
        {
            sut.MoveNext();

            var result = sut.Current.Handler(null);

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

            yield return(new TestCaseData(enumerator1));

            //1 handler
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(CommandFactory())
            });

            yield return(new TestCaseData(enumerator2));

            //2 handlers
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
            {
                HandlerFactory(CommandFactory()),
                HandlerFactory(CommandFactory())
            });

            yield return(new TestCaseData(enumerator3));
        }
 public void CurrentReturnsExpectedResultWhenCompleted(
     SqlProjectionHandlerEnumerator sut)
 {
     Assert.Throws <InvalidOperationException>(
         () => { var _ = sut.Current; });
 }
 public void ResetDoesNotThrow(SqlProjectionHandlerEnumerator sut)
 {
     Assert.DoesNotThrow(sut.Reset);
 }
 public void MoveNextReturnsExpectedResult(
     SqlProjectionHandlerEnumerator sut, bool expected)
 {
     var result = sut.MoveNext();
     Assert.That(result, Is.EqualTo(expected));
 }
 public void CurrentReturnsExpectedResultWhenNotStarted(
     SqlProjectionHandlerEnumerator sut)
 {
     Assert.Throws<InvalidOperationException>(
         () => { var _ = sut.Current; });
 }
        private static IEnumerable<TestCaseData> ResetCases()
        {
            //No handlers
            var enumerator1 = new SqlProjectionHandlerEnumerator(new SqlProjectionHandler[0]);
            yield return new TestCaseData(enumerator1);

            //1 handler
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(CommandFactory())
                });
            yield return new TestCaseData(enumerator2);

            //2 handlers
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(CommandFactory()),
                    HandlerFactory(CommandFactory())
                });
            yield return new TestCaseData(enumerator3);
        }
        private static IEnumerable<TestCaseData> MoveNextCases()
        {
            //No handlers
            var enumerator1 = new SqlProjectionHandlerEnumerator(new SqlProjectionHandler[0]);
            yield return new TestCaseData(enumerator1, false);
            yield return new TestCaseData(enumerator1, false); //idempotency check

            //1 handler
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(CommandFactory())
                });
            yield return new TestCaseData(enumerator2, true);
            yield return new TestCaseData(enumerator2, false);
            yield return new TestCaseData(enumerator2, false); //idempotency check

            //2 handlers
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(CommandFactory()),
                    HandlerFactory(CommandFactory())
                });
            yield return new TestCaseData(enumerator3, true);
            yield return new TestCaseData(enumerator3, true);
            yield return new TestCaseData(enumerator3, false);
            yield return new TestCaseData(enumerator3, false); //idempotency check
        }
        private static IEnumerable<TestCaseData> CurrentStartedCases()
        {
            //No handlers - not applicable

            //1 handler
            var command1 = CommandFactory();
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(command1)
                });
            yield return new TestCaseData(enumerator2, new[]
                {
                    command1
                });

            //2 handlers
            var command2 = CommandFactory();
            var command3 = CommandFactory();
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(command2),
                    HandlerFactory(command3)
                });
            yield return new TestCaseData(enumerator3, new[]
                {
                    command2
                });
            yield return new TestCaseData(enumerator3, new[]
                {
                    command3
                });
        }
        private static IEnumerable<TestCaseData> CurrentCompletedCases()
        {
            //No handlers
            var enumerator1 = new SqlProjectionHandlerEnumerator(new SqlProjectionHandler[0]);
            while (enumerator1.MoveNext()) { }
            yield return new TestCaseData(enumerator1);

            //1 handler
            var enumerator2 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(CommandFactory())
                });
            while (enumerator2.MoveNext()) { }
            yield return new TestCaseData(enumerator2);

            //2 handlers
            var enumerator3 = new SqlProjectionHandlerEnumerator(new[]
                {
                    HandlerFactory(CommandFactory()),
                    HandlerFactory(CommandFactory())
                });
            while (enumerator3.MoveNext()) { }
            yield return new TestCaseData(enumerator3);
        }
 public void ResetDoesNotThrow(SqlProjectionHandlerEnumerator sut)
 {
     Assert.DoesNotThrow(sut.Reset);
 }