public void ExecuteVoidValueMethod() { var executor = GetExecutorForMethod(nameof(TestObject.VoidValueMethod)); var result = executor.Execute( _targetObject, new object[] { 10 }); Assert2.False(executor.IsMethodAsync); Assert2.Null(result); }
public void Process_ArrayMemberAccess_ReturnsNull() { // Arrange var expression = GetTestModelExpression(m => m.Sizes[1]); // Act var func = CachedExpressionCompiler.Process(expression); // Assert Assert2.Null(func); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }