public void GenerateTextForOuterSqlStatement ()
{
var sqlStatement = SqlStatementModelObjectMother.CreateSqlStatement (
_entityExpression, new[] { new SqlTable (new ResolvedSimpleTableInfo (typeof (int), "Table", "t"), JoinSemantics.Inner) });
var stage = new DefaultSqlGenerationStage();
stage.GenerateTextForOuterSqlStatement (_commandBuilder, sqlStatement);
Assert.That (_commandBuilder.GetCommandText (), Is.EqualTo ("SELECT [t].[ID],[t].[Name],[t].[City] FROM [Table] AS [t]"));
var inMemoryProjection = _commandBuilder.GetInMemoryProjectionBody();
Assert.That (inMemoryProjection, Is.AssignableTo (typeof (MethodCallExpression)));
var methodCallExpression = (MethodCallExpression) inMemoryProjection;
Assert.That (methodCallExpression.Method, Is.EqualTo ((typeof (IDatabaseResultRow).GetMethod ("GetEntity").MakeGenericMethod (sqlStatement.SelectProjection.Type))));
Assert.That (methodCallExpression.Arguments.Count, Is.EqualTo (1));
Assert.That (((ColumnID[]) ((ConstantExpression) methodCallExpression.Arguments[0]).Value)[0].ColumnName, Is.EqualTo ("ID"));
Assert.That (((ColumnID[]) ((ConstantExpression) methodCallExpression.Arguments[0]).Value)[1].ColumnName, Is.EqualTo ("Name"));
Assert.That (((ColumnID[]) ((ConstantExpression) methodCallExpression.Arguments[0]).Value)[2].ColumnName, Is.EqualTo ("City"));
}