public void VisitBinaryExpression_ExclusiveOr_OnBooleans() { var binaryExpression = Expression.ExclusiveOr(_trueExpression, _falseExpression); var expectedXorSimulation = Expression.OrElse( Expression.AndAlso(_trueExpression, Expression.Not(_falseExpression)), Expression.AndAlso(Expression.Not(_trueExpression), _falseExpression)); _expressionVisitorMock .Expect(mock => mock.Visit(Arg <Expression> .Matches(expr => expr is BinaryExpression))) .WhenCalled(mi => { var expr = (BinaryExpression)mi.Arguments[0]; SqlExpressionTreeComparer.CheckAreEqualTrees(expr, expectedXorSimulation); _commandBuilder.Append("XOR SIMULATION"); }) .Return(null); _generator.GenerateSqlForBinaryExpression(binaryExpression); _expressionVisitorMock.VerifyAllExpectations(); var result = _commandBuilder.GetCommandText(); Assert.That(result, Is.EqualTo("XOR SIMULATION")); }
/// <inheritdoc /> public override SqlCommand MakeCreateTempTableCommand(TableSchema tableSchema) { EnsureValidSchemaForTempTables(tableSchema); var sql = new SqlCommandBuilder("CREATE TABLE ").Append(tableSchema.Name).AppendLine(); sql.AppendLine("("); var isFirst = true; foreach (var column in tableSchema.Columns) { if (!isFirst) { sql.AppendLine(","); } sql.Append(new string(' ', 4)); sql.Append(column.ColumnName); sql.Append(" ").Append(GetColumnType(column)); isFirst = false; } sql.AppendLine(); sql.Append(");"); return(sql.ToCommand(null)); }
/// <summary> /// Appends a list of properties in the form of @ParameterName, @ParameterName ... /// </summary> public static SqlCommandBuilder AppendParameterNames( this SqlCommandBuilder sql, ImmutableArray <ColumnSchema> properties, Func <ColumnSchema, bool> include) { var isFirst = true; // ReSharper disable once ForCanBeConvertedToForeach // PERF: This method can be called in a very tight loop so should be as fast as possible for (var i = 0; i < properties.Length; i++) { var property = properties[i]; if (!include(property)) { continue; } if (!isFirst) { sql.Append(", "); } sql.Append("@").Append(property.ParameterName); isFirst = false; } return(sql); }
/// <summary> /// Appends a SQL clause which lists all the properties and their aliases. /// </summary> public static SqlCommandBuilder AppendSelectPropertiesClause( this SqlCommandBuilder sql, ImmutableArray <ColumnSchema> properties) { var isFirst = true; // ReSharper disable once ForCanBeConvertedToForeach // PERF: This method can be called in a very tight loop so should be as fast as possible for (var i = 0; i < properties.Length; i++) { var property = properties[i]; if (!isFirst) { sql.Append(", "); } sql.Append(property.ColumnName); if (!string.Equals(property.ColumnName, property.SelectName, StringComparison.OrdinalIgnoreCase)) { sql.Append(" AS " + property.SelectName); } isFirst = false; } return(sql); }
/// <inheritdoc /> public override SqlCommand MakeCreateTempTableCommand(TableSchema tableSchema) { if (tableSchema.Columns.IsEmpty) { throw new ArgumentException("Temporary tables must have columns"); } var sql = new SqlCommandBuilder("CREATE TEMP TABLE ").Append(tableSchema.Name).AppendLine(); sql.AppendLine("("); var isFirst = true; foreach (var column in tableSchema.Columns) { if (!isFirst) { sql.AppendLine(","); } sql.Append(new string(' ', 4)); sql.Append(column.ColumnName); sql.Append(" ").Append(GetColumnType(column)); isFirst = false; } sql.AppendLine(); sql.Append(")"); return(sql.ToCommand(null)); }
public void GenerateTextForTopExpression() { var sqlStatement = new SqlStatementBuilder { DataInfo = new TestStreamedValueInfo(typeof(int)), SelectProjection = _entityExpression, TopExpression = Expression.Constant(5) }. GetSqlStatement(); var stageMock = MockRepository.GeneratePartialMock <DefaultSqlGenerationStage>(); stageMock .Expect(mock => CallGenerateTextForNonSelectExpression(mock, sqlStatement.TopExpression)) .WhenCalled(c => _commandBuilder.Append("test")); stageMock.Replay(); stageMock.GenerateTextForTopExpression(_commandBuilder, sqlStatement.TopExpression); stageMock.VerifyAllExpectations(); Assert.That(_commandBuilder.GetCommandText(), Is.EqualTo("test")); }
public void SetUp() { _commandBuilder = new SqlCommandBuilder(); _expressionVisitorMock = MockRepository.GenerateStrictMock <ExpressionVisitor>(); _leftIntegerExpression = Expression.Constant(1); _expressionVisitorMock .Stub(stub => stub.Visit(_leftIntegerExpression)) .WhenCalled(mi => _commandBuilder.Append("left")) .Return(_leftIntegerExpression); _rightIntegerExpression = Expression.Constant(2); _expressionVisitorMock .Stub(stub => stub.Visit(_rightIntegerExpression)) .WhenCalled(mi => _commandBuilder.Append("right")) .Return(_rightIntegerExpression); _leftDoubleExpression = Expression.Constant(1D); _expressionVisitorMock .Stub(stub => stub.Visit(_leftDoubleExpression)) .WhenCalled(mi => _commandBuilder.Append("leftDouble")) .Return(_leftDoubleExpression); _rightDoubleExpression = Expression.Constant(2D); _expressionVisitorMock .Stub(stub => stub.Visit(_rightDoubleExpression)) .WhenCalled(mi => _commandBuilder.Append("rightDouble")) .Return(_rightDoubleExpression); _leftStringExpression = Expression.Constant("Left"); _expressionVisitorMock .Stub(stub => stub.Visit(_leftStringExpression)) .WhenCalled(mi => _commandBuilder.Append("leftString")) .Return(_leftStringExpression); _rightStringExpression = Expression.Constant("Right"); _expressionVisitorMock .Stub(stub => stub.Visit(_rightStringExpression)) .WhenCalled(mi => _commandBuilder.Append("rightString")) .Return(_rightStringExpression); _nullExpression = Expression.Constant(null, typeof(string)); _expressionVisitorMock .Stub(stub => stub.Visit(_nullExpression)) .WhenCalled(mi => _commandBuilder.Append("NULL")) .Return(_rightStringExpression); _trueExpression = Expression.Constant(true); _expressionVisitorMock .Stub(stub => stub.Visit(_trueExpression)) .WhenCalled(mi => _commandBuilder.Append("true")) .Return(_trueExpression); _falseExpression = Expression.Constant(false); _expressionVisitorMock .Stub(stub => stub.Visit(_falseExpression)) .WhenCalled(mi => _commandBuilder.Append("false")) .Return(_falseExpression); _nullableTrueExpression = Expression.Constant(true, typeof(bool?)); _expressionVisitorMock .Stub(stub => stub.Visit(_nullableTrueExpression)) .WhenCalled(mi => _commandBuilder.Append("true")) .Return(_nullableTrueExpression); _nullableFalseExpression = Expression.Constant(false, typeof(bool?)); _expressionVisitorMock .Stub(stub => stub.Visit(_nullableFalseExpression)) .WhenCalled(mi => _commandBuilder.Append("false")) .Return(_nullableFalseExpression); _sqlEntityExpression = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression(typeof(Cook)); _expressionVisitorMock .Stub(stub => stub.Visit(_sqlEntityExpression)) .WhenCalled(mi => _commandBuilder.Append("[c].[ID]")) .Return(((SqlEntityExpression)_sqlEntityExpression).GetIdentityExpression()); _generator = new BinaryExpressionTextGenerator(_commandBuilder, _expressionVisitorMock); }
public void GetCommandText() { _sqlCommandBuilder.Append("Test"); Assert.That(_sqlCommandBuilder.GetCommandText(), Is.EqualTo("Test")); }
public void SetUp () { _commandBuilder = new SqlCommandBuilder(); _expressionVisitorMock = MockRepository.GenerateStrictMock<ExpressionTreeVisitor>(); _leftIntegerExpression = Expression.Constant (1); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_leftIntegerExpression)) .WhenCalled (mi => _commandBuilder.Append ("left")) .Return (_leftIntegerExpression); _rightIntegerExpression = Expression.Constant (2); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_rightIntegerExpression)) .WhenCalled (mi => _commandBuilder.Append ("right")) .Return (_rightIntegerExpression); _leftDoubleExpression = Expression.Constant (1D); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_leftDoubleExpression)) .WhenCalled (mi => _commandBuilder.Append ("leftDouble")) .Return (_leftDoubleExpression); _rightDoubleExpression = Expression.Constant (2D); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_rightDoubleExpression)) .WhenCalled (mi => _commandBuilder.Append ("rightDouble")) .Return (_rightDoubleExpression); _leftStringExpression = Expression.Constant ("Left"); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_leftStringExpression)) .WhenCalled (mi => _commandBuilder.Append ("leftString")) .Return (_leftStringExpression); _rightStringExpression = Expression.Constant ("Right"); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_rightStringExpression)) .WhenCalled (mi => _commandBuilder.Append ("rightString")) .Return (_rightStringExpression); _nullExpression = Expression.Constant (null, typeof (string)); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_nullExpression)) .WhenCalled (mi => _commandBuilder.Append ("NULL")) .Return (_rightStringExpression); _trueExpression = Expression.Constant (true); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_trueExpression)) .WhenCalled (mi => _commandBuilder.Append ("true")) .Return (_trueExpression); _falseExpression = Expression.Constant (false); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_falseExpression)) .WhenCalled (mi => _commandBuilder.Append ("false")) .Return (_falseExpression); _nullableTrueExpression = Expression.Constant (true, typeof (bool?)); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_nullableTrueExpression)) .WhenCalled (mi => _commandBuilder.Append ("true")) .Return (_nullableTrueExpression); _nullableFalseExpression = Expression.Constant (false, typeof (bool?)); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_nullableFalseExpression)) .WhenCalled (mi => _commandBuilder.Append ("false")) .Return (_nullableFalseExpression); _sqlEntityExpression = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression (typeof (Cook)); _expressionVisitorMock .Stub (stub => stub.VisitExpression (_sqlEntityExpression)) .WhenCalled (mi => _commandBuilder.Append ("[c].[ID]")) .Return (((SqlEntityExpression) _sqlEntityExpression).GetIdentityExpression()); _generator = new BinaryExpressionTextGenerator (_commandBuilder, _expressionVisitorMock); }