Example #1
0
        //[Theory]
        //[MemberData(nameof(IndexerExpressions))]
        //[MemberData(nameof(UnsupportedExpressions))]
        private void GetExpressionText_DoesNotCacheIndexerOrUnsupportedExpression_Theory(LambdaExpression expression)
        {
            // Act - 1
            var text1 = ExpressionHelper.GetExpressionText(expression, _expressionTextCache);

            // Act - 2
            var text2 = ExpressionHelper.GetExpressionText(expression, _expressionTextCache);

            // Assert
            Assert2.Equal(text1, text2, StringComparer.Ordinal);
            Assert2.NotSame(text1, text2); // not cached
        }
Example #2
0
        //[Theory]
        //[MemberData(nameof(NonEquivalentExpressions))]
        public void GetExpressionText_CheckNonEquivalentExpressions_Theory(LambdaExpression expression1, LambdaExpression expression2)
        {
            // Act - 1
            var text1 = ExpressionHelper.GetExpressionText(expression1, _expressionTextCache);

            // Act - 2
            var text2 = ExpressionHelper.GetExpressionText(expression2, _expressionTextCache);

            // Assert
            Assert2.NotEqual(text1, text2, StringComparer.Ordinal);
            Assert2.NotSame(text1, text2);
        }
Example #3
0
        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);

            Assert2.Same(differentModel, result1);

            // Act - 2
            differentModel = new DifferentModel();

            // Assert - 2
            var result2 = func(null);

            Assert2.NotSame(differentModel, result1);
            Assert2.Same(differentModel, result2);
        }