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())); }
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())); }
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)); }
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)); }
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 })); }
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); }
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)); }
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))); }
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)); }
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 })); }
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 })); }
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)); }
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)); }
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 })); }
public Any(SqlProjectionHandler[] handlers) : base(handlers) { }
public WithHandlers(SqlProjectionHandler[] handlers) : base(handlers) { }