public void TestTwice() { var visitor = new ParameterResolveVisitor(typeof(IMiscTarget).GetMethod(nameof(IMiscTarget.Twice))); visitor.Visit(new[] { new ParameterNode("id"), new ParameterNode("id") }); Assert.Equal(1, visitor.Parameters.Count); }
public void TestDirectionArgument() { var visitor = new ParameterResolveVisitor(typeof(IDirectionTarget).GetMethod(nameof(IDirectionTarget.Argument))); visitor.Visit(new[] { new ParameterNode("param1"), new ParameterNode("param2"), new ParameterNode("param3") }); Assert.Equal(3, visitor.Parameters.Count); Assert.Equal(ParameterDirection.Input, visitor.Parameters[0].Direction); Assert.Equal(ParameterDirection.InputOutput, visitor.Parameters[1].Direction); Assert.Equal(ParameterDirection.Output, visitor.Parameters[2].Direction); }
public void TestList() { var visitor = new ParameterResolveVisitor(typeof(IEnumerableTarget).GetMethod(nameof(IEnumerableTarget.List))); visitor.Visit(new[] { new ParameterNode("parameters") }); Assert.Equal(1, visitor.Parameters.Count); var parameter = visitor.Parameters[0]; Assert.True(parameter.IsMultiple); }
public void TestArgumentMultiple() { var visitor = new ParameterResolveVisitor(typeof(IResolveTarget).GetMethod(nameof(IResolveTarget.Argument))); visitor.Visit(new[] { new ParameterNode("values") }); Assert.Equal(1, visitor.Parameters.Count); var parameter = visitor.Parameters[0]; Assert.Equal("values", parameter.Source); Assert.Equal(1, parameter.ParameterIndex); Assert.Null(parameter.DeclaringType); Assert.Null(parameter.PropertyName); Assert.Equal(typeof(int[]), parameter.Type); Assert.Equal(ParameterDirection.Input, parameter.Direction); Assert.True(parameter.IsMultiple); }
public void TestParameterNested() { var visitor = new ParameterResolveVisitor(typeof(IResolveTarget).GetMethod(nameof(IResolveTarget.Parameter))); visitor.Visit(new[] { new ParameterNode("Nested[0][0]") }); Assert.Equal(1, visitor.Parameters.Count); var parameter = visitor.Parameters[0]; Assert.Equal("parameter.Nested[0][0]", parameter.Source); Assert.Equal(-1, parameter.ParameterIndex); Assert.Equal(typeof(Parameter), parameter.DeclaringType); Assert.Equal(nameof(Parameter.Nested), parameter.PropertyName); Assert.Equal(typeof(int), parameter.Type); Assert.Equal(ParameterDirection.Input, parameter.Direction); Assert.False(parameter.IsMultiple); }
public void TestParameterWithWhitespace() { var visitor = new ParameterResolveVisitor(typeof(IResolveTarget).GetMethod(nameof(IResolveTarget.Parameter))); visitor.Visit(new[] { new ParameterNode("ChildMap [ 0 ] . Id") }); Assert.Equal(1, visitor.Parameters.Count); var parameter = visitor.Parameters[0]; Assert.Equal("parameter.ChildMap [ 0 ] . Id", parameter.Source); Assert.Equal(-1, parameter.ParameterIndex); Assert.Equal(typeof(ChildParameter), parameter.DeclaringType); Assert.Equal(nameof(ChildParameter.Id), parameter.PropertyName); Assert.Equal(typeof(string), parameter.Type); Assert.Equal(ParameterDirection.Input, parameter.Direction); Assert.False(parameter.IsMultiple); }
public void TestArgumentChildMapPropertyExpressionNested() { var visitor = new ParameterResolveVisitor(typeof(IResolveTarget).GetMethod(nameof(IResolveTarget.Argument))); visitor.Visit(new[] { new ParameterNode("childMap[data.Get()[0]].Id") }); Assert.Equal(1, visitor.Parameters.Count); var parameter = visitor.Parameters[0]; Assert.Equal("childMap[data.Get()[0]].Id", parameter.Source); Assert.Equal(-1, parameter.ParameterIndex); Assert.Equal(typeof(ChildParameter), parameter.DeclaringType); Assert.Equal(nameof(ChildParameter.Id), parameter.PropertyName); Assert.Equal(typeof(string), parameter.Type); Assert.Equal(ParameterDirection.Input, parameter.Direction); Assert.False(parameter.IsMultiple); }