Exemplo n.º 1
0
 public static IEnumerable<TestCaseData> ProjectMessageCases()
 {
     //Match
     var commands1 = new[] { CommandFactory(), CommandFactory() };
     var handler1 = new SqlProjectionHandler(typeof(object), _ => commands1);
     var resolver1 = new SqlProjectionHandlerResolver(message => new[] { handler1 });
     yield return new TestCaseData(
         resolver1,
         new object(),
         commands1);
     //Mismatch
     var resolver2 = new SqlProjectionHandlerResolver(message => new SqlProjectionHandler[0]);
     yield return new TestCaseData(
         resolver2,
         new object(),
         new SqlNonQueryCommand[0]);
     //Multimatch
     var commands3 = new[] { CommandFactory(), CommandFactory() };
     var commands4 = new[] { CommandFactory(), CommandFactory() };
     var handler3 = new SqlProjectionHandler(typeof(object), _ => commands3);
     var handler4 = new SqlProjectionHandler(typeof(object), _ => commands4);
     var resolver3 = new SqlProjectionHandlerResolver(message => new[] { handler3, handler4 });
     yield return new TestCaseData(
         resolver3,
         new object(),
         commands3.Concat(commands4).ToArray());
 }
        public static IEnumerable <TestCaseData> ProjectMessageCases()
        {
            //Match
            var commands1 = new[] { CommandFactory(), CommandFactory() };
            var handler1  = new SqlProjectionHandler(typeof(object), _ => commands1);
            var resolver1 = new SqlProjectionHandlerResolver(message => new[] { handler1 });

            yield return(new TestCaseData(
                             resolver1,
                             new object(),
                             commands1));

            //Mismatch
            var resolver2 = new SqlProjectionHandlerResolver(message => new SqlProjectionHandler[0]);

            yield return(new TestCaseData(
                             resolver2,
                             new object(),
                             new SqlNonQueryCommand[0]));

            //Multimatch
            var commands3 = new[] { CommandFactory(), CommandFactory() };
            var commands4 = new[] { CommandFactory(), CommandFactory() };
            var handler3  = new SqlProjectionHandler(typeof(object), _ => commands3);
            var handler4  = new SqlProjectionHandler(typeof(object), _ => commands4);
            var resolver3 = new SqlProjectionHandlerResolver(message => new[] { handler3, handler4 });

            yield return(new TestCaseData(
                             resolver3,
                             new object(),
                             commands3.Concat(commands4).ToArray()));
        }
Exemplo n.º 3
0
 public void WhenEqualToHandlerMessageTypeResolverReturnsExpectedResult(
     SqlProjectionHandler[] resolvable,
     object message,
     SqlProjectionHandler[] resolved)
 {
     var sut = Resolve.WhenEqualToHandlerMessageType(resolvable);
     var result = sut(message);
     Assert.That(result, Is.EquivalentTo(resolved));
 }
        public static IEnumerable <TestCaseData> ProjectMessagesCases()
        {
            //Partial match
            var commands1 = new[] { CommandFactory(), CommandFactory() };
            var handler1  = new SqlProjectionHandler(typeof(string), _ => commands1);
            var resolver1 = Resolve.WhenEqualToHandlerMessageType(new[] { handler1 });

            yield return(new TestCaseData(
                             resolver1,
                             new object[] { "123", 123 },
                             commands1));

            //Mismatch
            var resolver2 = Resolve.WhenEqualToHandlerMessageType(new SqlProjectionHandler[0]);

            yield return(new TestCaseData(
                             resolver2,
                             new object[] { new object(), 123 },
                             new SqlNonQueryCommand[0]));

            //Multimatch
            var commands3 = new[] { CommandFactory(), CommandFactory() };
            var commands4 = new[] { CommandFactory(), CommandFactory() };
            var handler3  = new SqlProjectionHandler(typeof(object), _ => commands3);
            var handler4  = new SqlProjectionHandler(typeof(object), _ => commands4);
            var resolver3 = Resolve.WhenEqualToHandlerMessageType(new[] { handler3, handler4 });

            yield return(new TestCaseData(
                             resolver3,
                             new object[] { new object(), new object() },
                             commands3.Concat(commands4).Concat(commands3).Concat(commands4).ToArray()));

            //Multitype Match
            var commands5 = new[] { CommandFactory(), CommandFactory() };
            var commands6 = new[] { CommandFactory(), CommandFactory() };
            var handler5  = new SqlProjectionHandler(typeof(string), _ => commands5);
            var handler6  = new SqlProjectionHandler(typeof(int), _ => commands6);
            var resolver4 = Resolve.WhenEqualToHandlerMessageType(new[] { handler5, handler6 });

            yield return(new TestCaseData(
                             resolver4,
                             new object[] { "123", 123 },
                             commands5.Concat(commands6).ToArray()));

            //Match
            var commands7 = new[] { CommandFactory(), CommandFactory() };
            var commands8 = new[] { CommandFactory(), CommandFactory() };
            var handler7  = new SqlProjectionHandler(typeof(object), _ => commands7);
            var handler8  = new SqlProjectionHandler(typeof(object), _ => commands8);
            var resolver5 = Resolve.WhenEqualToHandlerMessageType(new[] { handler7, handler8 });

            yield return(new TestCaseData(
                             resolver5,
                             new object[] { new object() },
                             commands7.Concat(commands8).ToArray()));
        }
Exemplo n.º 5
0
        public void ParametersArePreservedAsProperties()
        {
            var message = typeof(object);
            Func <object, IEnumerable <SqlNonQueryCommand> > handler = _ => new SqlNonQueryCommand[0];

            var sut = new SqlProjectionHandler(message, handler);

            Assert.That(sut.Message, Is.EqualTo(message));
            Assert.That(sut.Handler, Is.EqualTo(handler));
        }
Exemplo n.º 6
0
        public void ParametersArePreservedAsProperties()
        {
            var message = typeof(object);
            Func<object, IEnumerable<SqlNonQueryCommand>> handler = _ => new SqlNonQueryCommand[0];

            var sut = new SqlProjectionHandler(message, handler);

            Assert.That(sut.Message, Is.EqualTo(message));
            Assert.That(sut.Handler, Is.EqualTo(handler));
        }
Exemplo n.º 7
0
        public void ToBuilderReturnsExpectedResult()
        {
            var handler    = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var projection = new SqlProjection(new[] { handler });
            var sut        = SutFactory("identifier", projection);

            var result = sut.ToBuilder().Build();

            Assert.That(result.Identifier, Is.EqualTo("identifier"));
            Assert.That(result.Projection.Handlers, Is.EquivalentTo(new[] { handler }));
        }
Exemplo n.º 8
0
        public void ProjectMessageCausesExecutorToBeCalledWithExpectedCommandsWhenMessageTypeMismatches()
        {
            var commands = new[] { CommandFactory(), CommandFactory() };
            var mock     = new ExecutorMock();
            var handler  = new SqlProjectionHandler(typeof(string), _ => commands);
            var sut      = SutFactory(new[] { handler }, mock);

            var result = sut.Project(new object());

            Assert.That(result, Is.EqualTo(0));
            Assert.That(mock.Commands, Is.Empty);
        }
Exemplo n.º 9
0
        public async void ProjectAsyncMessageCausesExecutorToBeCalledWithExpectedCommandsWhenMessageTypeMatches()
        {
            var commands = new[] { CommandFactory(), CommandFactory() };
            var mock     = new ExecutorMock();
            var handler  = new SqlProjectionHandler(typeof(object), _ => commands);
            var sut      = SutFactory(new[] { handler }, mock);

            var result = await sut.ProjectAsync(new object());

            Assert.That(result, Is.EqualTo(2));
            Assert.That(mock.Commands, Is.EquivalentTo(commands));
        }
Exemplo n.º 10
0
        public async void ProjectAsyncTokenMessagesCausesExecutorToBeCalledWithExpectedCommandsWhenMessageTypeMatches()
        {
            var commands1 = new[] { CommandFactory(), CommandFactory() };
            var commands2 = new[] { CommandFactory(), CommandFactory() };
            var mock      = new ExecutorMock();
            var handler1  = new SqlProjectionHandler(typeof(int), _ => commands1);
            var handler2  = new SqlProjectionHandler(typeof(bool), _ => commands2);
            var sut       = SutFactory(new[] { handler1, handler2 }, mock);

            var result = await sut.ProjectAsync(new object[] { 123, true }, CancellationToken.None);

            Assert.That(result, Is.EqualTo(4));
            Assert.That(mock.Commands, Is.EquivalentTo(commands1.Concat(commands2)));
        }
Exemplo n.º 11
0
        public void ProjectMessagesCausesExecutorToBeCalledWithExpectedCommandsWhenMessageTypeMismatches()
        {
            var commands1 = new[] { CommandFactory(), CommandFactory() };
            var commands2 = new[] { CommandFactory(), CommandFactory() };
            var mock      = new ExecutorMock();
            var handler1  = new SqlProjectionHandler(typeof(int), _ => commands1);
            var handler2  = new SqlProjectionHandler(typeof(bool), _ => commands2);
            var sut       = SutFactory(new[] { handler1, handler2 }, mock);

            var result = sut.Project(new object[] { 123 });

            Assert.That(result, Is.EqualTo(2));
            Assert.That(mock.Commands, Is.EquivalentTo(commands1));
        }
Exemplo n.º 12
0
        public void ConcatHandlerReturnsExpectedResult()
        {
            var handler1 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var handler2 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var handler3 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var sut      = new SqlProjection(new[]
            {
                handler1,
                handler2
            });

            var result = sut.Concat(handler3);

            Assert.That(result.Handlers, Is.EquivalentTo(new[] { handler1, handler2, handler3 }));
        }
Exemplo n.º 13
0
 public static IEnumerable<TestCaseData> ProjectMessagesCases()
 {
     //Partial match
     var commands1 = new[] { CommandFactory(), CommandFactory() };
     var handler1 = new SqlProjectionHandler(typeof(string), _ => commands1);
     var resolver1 = Resolve.WhenEqualToHandlerMessageType(new[] { handler1 });
     yield return new TestCaseData(
         resolver1,
         new object[] { "123", 123 },
         commands1);
     //Mismatch
     var resolver2 = Resolve.WhenEqualToHandlerMessageType(new SqlProjectionHandler[0]);
     yield return new TestCaseData(
         resolver2,
         new object[] { new object(), 123 },
         new SqlNonQueryCommand[0]);
     //Multimatch
     var commands3 = new[] { CommandFactory(), CommandFactory() };
     var commands4 = new[] { CommandFactory(), CommandFactory() };
     var handler3 = new SqlProjectionHandler(typeof(object), _ => commands3);
     var handler4 = new SqlProjectionHandler(typeof(object), _ => commands4);
     var resolver3 = Resolve.WhenEqualToHandlerMessageType(new[] { handler3, handler4 });
     yield return new TestCaseData(
         resolver3,
         new object[] { new object(), new object() },
         commands3.Concat(commands4).Concat(commands3).Concat(commands4).ToArray());
     //Multitype Match
     var commands5 = new[] { CommandFactory(), CommandFactory() };
     var commands6 = new[] { CommandFactory(), CommandFactory() };
     var handler5 = new SqlProjectionHandler(typeof(string), _ => commands5);
     var handler6 = new SqlProjectionHandler(typeof(int), _ => commands6);
     var resolver4 = Resolve.WhenEqualToHandlerMessageType(new[] { handler5, handler6 });
     yield return new TestCaseData(
         resolver4,
         new object[] { "123", 123 },
         commands5.Concat(commands6).ToArray());
     //Match
     var commands7 = new[] { CommandFactory(), CommandFactory() };
     var commands8 = new[] { CommandFactory(), CommandFactory() };
     var handler7 = new SqlProjectionHandler(typeof(object), _ => commands7);
     var handler8 = new SqlProjectionHandler(typeof(object), _ => commands8);
     var resolver5 = Resolve.WhenEqualToHandlerMessageType(new[] { handler7, handler8 });
     yield return new TestCaseData(
         resolver5,
         new object[] { new object() },
         commands7.Concat(commands8).ToArray());
 }
        public void HandlersAreCopiedOnConstruction()
        {
            var handler1 = new SqlProjectionHandler(typeof(object), o => new SqlNonQueryCommand[0]);
            var handler2 = new SqlProjectionHandler(typeof(object), o => new SqlNonQueryCommand[0]);
            var sut = new AnonymousSqlProjectionBuilder(new[]
            {
                handler1,
                handler2
            });

            var result = sut.Build();

            Assert.That(result, Is.EquivalentTo(new[]
            {
                handler1, handler2
            }));
        }
Exemplo n.º 15
0
        public void HandlersArePreservedAsProperty()
        {
            var handler1 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var handler2 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);

            var handlers = new[]
            {
                handler1,
                handler2
            };

            var sut = new SqlProjection(handlers);

            var result = sut.Handlers;

            Assert.That(result, Is.EquivalentTo(handlers));
        }
Exemplo n.º 16
0
        public void ExplicitConversionToSqlProjectionHandlerArray()
        {
            var handler1 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var handler2 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);

            var handlers = new[]
            {
                handler1,
                handler2
            };

            var sut = new SqlProjection(handlers);

            var result = (SqlProjectionHandler[])sut;

            Assert.That(result, Is.EquivalentTo(handlers));
        }
Exemplo n.º 17
0
        public void HandlersAreCopiedOnConstruction()
        {
            var handler1 = new SqlProjectionHandler(typeof(object), o => new SqlNonQueryCommand[0]);
            var handler2 = new SqlProjectionHandler(typeof(object), o => new SqlNonQueryCommand[0]);
            var sut      = new AnonymousSqlProjectionBuilder(new[]
            {
                handler1,
                handler2
            });

            var result = sut.Build();

            Assert.That(result, Is.EquivalentTo(new[]
            {
                handler1, handler2
            }));
        }
Exemplo n.º 18
0
        public void ToBuilderReturnsExpectedResult()
        {
            var handler1 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var handler2 = new SqlProjectionHandler(typeof(object), _ => new SqlNonQueryCommand[0]);
            var sut      = new SqlProjection(new[]
            {
                handler1,
                handler2
            });

            var result = sut.ToBuilder().Build().Handlers;

            Assert.That(result, Is.EquivalentTo(new[]
            {
                handler1,
                handler2
            }));
        }
Exemplo n.º 19
0
 public Any(SqlProjectionHandler[] handlers)
     : base(handlers)
 {
 }
Exemplo n.º 20
0
 public WithHandlers(SqlProjectionHandler[] handlers)
     : base(handlers)
 {
 }