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 Assert.Null(func); }
public void Process_ConstLookup_WithNullModel() { // Arrange var differentModel = new DifferentModel(); var expression = GetTestModelExpression(m => differentModel); // Act var func = CachedExpressionCompiler.Process(expression); // Assert Assert.NotNull(func); var result = func(null); Assert.Same(differentModel, result); }
public void Process_CapturedVariable_WithNullModel() { // Arrange var differentModel = new DifferentModel(); var model = (TestModel)null; var expression = GetTestModelExpression(m => differentModel); // Act var func = CachedExpressionCompiler.Process(expression); // Assert Assert.NotNull(func); var result = func(model); Assert.Same(differentModel, result); }
public void Process_ConstLookup_UsingCachedValue() { // Arrange var model = new TestModel(); var differentModel = new DifferentModel(); var expression1 = GetTestModelExpression(m => differentModel); var expression2 = GetTestModelExpression(m => differentModel); // Act - 1 var func1 = CachedExpressionCompiler.Process(expression1); // Assert - 1 var result1 = func1(null); Assert.Same(differentModel, result1); // Act - 2 var func2 = CachedExpressionCompiler.Process(expression2); // Assert - 2 var result2 = func1(null); Assert.Same(differentModel, result2); }
public void Process_ConstLookup_WhenCapturedLocalChanges() { // Arrange var model = new TestModel(); var differentModel = new DifferentModel(); var expression = GetTestModelExpression(m => differentModel); // Act var func = CachedExpressionCompiler.Process(expression); // Assert - 1 var result1 = func(null); Assert.Same(differentModel, result1); // Act - 2 differentModel = new DifferentModel(); // Assert - 2 var result2 = func(null); Assert.NotSame(differentModel, result1); Assert.Same(differentModel, result2); }