public void AssertEnterAndLeave <T>( ObjectValueNode value, FilterKind kind, FilterFieldEnter enter, FilterFieldLeave leave) { FilterInputType <T> fooType = CreateType(new FilterInputType <T>()); ExpressionVisitorMock helper = ExpressionVisitorMock.Create(enter) .Setup(leave); FilterExpressionVisitorDefinition convention = new MockFilterConvention( x => x.UseDefault() .UseExpressionVisitor() .UseDefault() .Kind(kind) .Enter(helper.FilterFieldEnter) .Leave(helper.FilterFieldLeave)) .GetExpressionDefinition(); // act var filter = new QueryableFilterVisitorContext( fooType, typeof(T), convention, TypeConversion.Default, true); QueryableFilterVisitor.Default.Visit(value, filter); Func <T, bool> func = filter.CreateOrAssert <T>().Compile(); // assert Assert.Equal(1, helper.CallCount(enter)); Assert.Equal(1, helper.CallCount(leave)); }
public IFilterExpressionTypeDescriptor Enter(FilterFieldEnter handler) { Definition.Enter = handler; return(this); }
public static ExpressionVisitorMock Create(FilterFieldEnter handler) => new ExpressionVisitorMock().Setup(handler);
public int CallCount(FilterFieldEnter _) => fieldEnterCallCounter;
public ExpressionVisitorMock Setup(FilterFieldEnter handler) { fieldEnterCallCounter = 0; fieldEnterHandler = handler; return(this); }