Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }