public void SetValueShouldAppendAssignment() { // Arrange IQueryable <TestClass> queryable = new List <TestClass>().AsQueryable(); var statementBuilder = new UpdateStatementBuilder <TestClass>(queryable); // Act statementBuilder.SetValue(s => s.Id, 3); // Assert Assert.Single(statementBuilder.Assignements); MemberAssignment assignment = statementBuilder.Assignements.Single(); Assert.Same(typeof(TestClass).GetProperty(nameof(TestClass.Id)), assignment.Member); Assert.IsAssignableFrom <ConstantExpression>(assignment.Expression); var constantExpression = assignment.Expression as ConstantExpression; Assert.IsType <int>(constantExpression.Value); Assert.Equal(3, constantExpression.Value); }
public void SetValueShouldAppendIncreaseAssignment() { // Arrange IQueryable <TestClass> queryable = new List <TestClass>().AsQueryable(); var statementBuilder = new UpdateStatementBuilder <TestClass>(queryable); PropertyInfo propertyToAssign = typeof(TestClass).GetProperty(nameof(TestClass.Id)); // Act statementBuilder.SetValue(s => s.Id, s => s.Id + 3); // Assert Assert.Single(statementBuilder.Assignements); MemberAssignment assignment = statementBuilder.Assignements.Single(); Assert.Same(propertyToAssign, assignment.Member); Assert.IsAssignableFrom <BinaryExpression>(assignment.Expression); var binaryExpression = assignment.Expression as BinaryExpression; Assert.IsAssignableFrom <MemberExpression>(binaryExpression.Left); Assert.IsAssignableFrom <ConstantExpression>(binaryExpression.Right); var memberExpression = binaryExpression.Left as MemberExpression; Assert.Same(propertyToAssign, memberExpression.Member); Assert.Equal(ExpressionType.Add, binaryExpression.NodeType); var constantExpression = binaryExpression.Right as ConstantExpression; Assert.IsType <int>(constantExpression.Value); Assert.Equal(3, constantExpression.Value); }