Example #1
0
        public void ExecuteVoidValueMethod()
        {
            var executor = GetExecutorForMethod(nameof(TestObject.VoidValueMethod));
            var result   = executor.Execute(
                _targetObject,
                new object[] { 10 });

            Assert2.False(executor.IsMethodAsync);
            Assert2.Null(result);
        }
Example #2
0
        public void Process_ArrayMemberAccess_ReturnsNull()
        {
            // Arrange
            var expression = GetTestModelExpression(m => m.Sizes[1]);

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

            // Assert
            Assert2.Null(func);
        }
Example #3
0
        public void Process_MemberAccess_OnCapturedVariable_ReturnsNull()
        {
            // Arrange
            var differentModel = "Hello world";
            var expression     = GetTestModelExpression(m => differentModel.Length);

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

            // Assert
            Assert2.Null(func);
        }
Example #4
0
        public async Task TargetMethodReturningAwaitableOfVoidType_CanInvokeViaExecuteAsync()
        {
            // Arrange
            var executor = GetExecutorForMethod(nameof(TestObject.VoidValueMethodAsync));

            // Act
            var result = await executor.ExecuteAsync(_targetObject, new object[] { 123 });

            // Assert
            Assert2.True(executor.IsMethodAsync);
            Assert2.Same(typeof(void), executor.AsyncResultType);
            Assert2.Null(result);
        }
Example #5
0
        public void Process_MemberAccessOnCapturedVariable_ReturnsNull()
        {
            // Arrange
            var differentModel = new DifferentModel {
                Name = "Test"
            };
            var expression = GetTestModelExpression(m => differentModel.Name);

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

            // Assert
            Assert2.Null(func);
        }
Example #6
0
        public void Process_ConstLookup_ReturningNull()
        {
            // Arrange
            var model      = new TestModel();
            var expression = GetTestModelExpression(m => (DifferentModel)null);

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

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

            Assert2.Null(result);
        }
Example #7
0
        public void Process_ChainedMemberAccess_ToReferenceType_WithNullModel()
        {
            // Arrange
            var model      = (TestModel)null;
            var expression = GetTestModelExpression(m => m.DifferentModel.Name);

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

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

            Assert2.Null(result);
        }
Example #8
0
        public void Process_SimpleMemberAccess_OnNullableValueType_WithNullValue()
        {
            // Arrange
            var nullableModel = (DateTime?)null;
            var expression    = GetExpression <DateTime?, DateTime>(m => m.Value);

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

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

            Assert2.Null(result);
        }
Example #9
0
        public void Process_SimpleMemberAccess_OnTypeWithBadEqualityComparer_WithNullModel()
        {
            // Arrange
            var model      = (BadEqualityModel)null;
            var expression = GetExpression <BadEqualityModel, int>(m => m.Id);

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

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

            Assert2.Null(result);
        }
Example #10
0
        public void Process_SimpleMemberAccess_ToPrimitive_WithNullModel()
        {
            // Arrange
            var model      = (TestModel)null;
            var expression = GetTestModelExpression(m => m.Age);

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

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

            Assert2.Null(result);
        }
Example #11
0
        public void MakeNullSafeFastPropertyGetter_ValueType_ForNullObject_ReturnsNull()
        {
            // Arrange
            var property = PropertyHelper
                           .GetPropertyAccessors(typeof(MyProperties))
                           .Single(p => p.Name == nameof(MyProperties.StringProp));

            var accessor = PropertyHelper.MakeNullSafeFastPropertyGetter(property.Property);

            // Act
            var value = accessor(null);

            // Assert
            Assert2.Null(value);
        }
Example #12
0
        public void Process_ComplexChainedMemberAccess_ReturnsNull()
        {
            // Arrange
            var expected = "SomeName";
            var model    = new TestModel {
                DifferentModels = new[] { new DifferentModel {
                                              Name = expected
                                          } }
            };
            var expression = GetTestModelExpression(m => m.DifferentModels[0].Name);

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

            // Assert
            Assert2.Null(func);
        }
Example #13
0
        public void Process_ChainedMemberAccess_OfValueTypes_WithNullValuedNullable_ReturningValueType()
        {
            // Arrange
            var model = new ValueType1 {
                NullableValueType2 = null
            };
            var expression = GetExpression <ValueType1, DateTime>(m => m.NullableValueType2.Value.Date);

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

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

            Assert2.Null(result);
        }
Example #14
0
        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
            Assert2.NotNull(func);
            var result = func(model);

            Assert2.Null(result);
        }