public void Process_ChainedMemberAccess_LongChain_WithNullableValueType()
    {
        // Arrange
        var expected = "TestVal";
        var model    = new Chain0Model
        {
            Chain1 = new Chain1Model
            {
                NullableValueTypeModel = new ValueType1
                {
                    TestModel = new TestModel {
                        DifferentModel = new DifferentModel {
                            Name = expected
                        }
                    }
                }
            }
        };

        var expression = GetExpression <Chain0Model, string>(m => m.Chain1.NullableValueTypeModel.Value.TestModel.DifferentModel.Name);

        // Act
        var func = CachedExpressionCompiler.Process(expression);

        // Assert
        Assert.NotNull(func);
        var result = func(model);

        Assert.Equal(expected, result);
    }
    public void Process_ChainedMemberAccess_LongChain_WithNullValueTypeAccessor()
    {
        // Arrange
        // Chain2 is a value type
        var model = new Chain0Model
        {
            Chain1 = null
        };

        var expression = GetExpression <Chain0Model, string>(m => m.Chain1.ValueTypeModel.TestModel.DifferentModel.Name);

        // Act
        var func = CachedExpressionCompiler.Process(expression);

        // Assert
        Assert.NotNull(func);
        var result = func(model);

        Assert.Null(result);
    }
示例#3
0
        public void Process_ChainedMemberAccess_LongChain_WithNullIntermediary()
        {
            // Arrange
            var model = new Chain0Model
            {
                Chain1 = new Chain1Model
                {
                    ValueTypeModel = new ValueType1 {
                        TestModel = null
                    },
                }
            };

            var expression = GetExpression <Chain0Model, string>(m => m.Chain1.ValueTypeModel.TestModel.DifferentModel.Name);

            // Act
            var func = CachedExpressionCompiler.Process(expression);

            // Assert
            Assert2.NotNull(func);
            var result = func(model);

            Assert2.Null(result);
        }