Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }