Пример #1
0
        public void SingleArrayOfObjectParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method  = handler.GetType().GetMethod("SingleArrayOfObjectParam");
            var miw     = new MethodInfoWrapper <FakeHandler>(method);
            var input   = new
            {
                queryData = new[] {
                    new FakeObject {
                        Prop1 = "val1", Prop2 = 10, Prop3 = 10.5
                    },
                    new FakeObject {
                        Prop1 = "val2", Prop2 = 20, Prop3 = 20.5
                    },
                    new FakeObject {
                        Prop1 = "val3", Prop2 = 30, Prop3 = 30.5
                    }
                }
            };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(1, miw.MatchedParameters());
            Assert.AreEqual(input.queryData, output);
        }
Пример #2
0
        void AddMethod(TextWriter writer, MethodInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"publicMethod\" src=\"{0}/resources/blank.gif\" title=\"Public Method\" alt=\"Public Method\"/>", RootRelativePath);
            if (info.IsStatic)
            {
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Method\" alt=\"Static Method\"/>", RootRelativePath);
            }
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"./{0}\">{1}({2})</a>", FilenameGenerator.GenerateFilename(info), info.Name, FormatParameters(info.GetParameters()));
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            var docs = NDocUtilities.FindDocumentation(this._currentNDoc, info);
            var html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);

            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
        public string GenerateSyntax(MethodInfoWrapper info)
        {
            var syntax = new SyntaxWriter(this._version);

            if (info.IsPublic)
            {
                syntax.WriteToken("public");
            }

            if (info.IsAbstract)
            {
                syntax.WriteToken("abstract");
            }

            if (info.IsVirtual)
            {
                syntax.WriteToken("virtual");
            }

            syntax.WriteTypeName(info.ReturnType);

            syntax.WriteRaw(" " + info.Name);
            var parameters = info.GetParameters();

            AddParameters(syntax, parameters);

            return(syntax.CurrentSyntax);
        }
Пример #4
0
        public void SingleObjectParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method  = handler.GetType().GetMethod("SingleObjectParam");
            var miw     = new MethodInfoWrapper <FakeHandler>(method);
            var input   = new FakeObject
            {
                Prop1 = "val1",
                Prop2 = 20,
                Prop3 = 20.5,
                Prop4 = true,
                Prop5 = DateTime.Now,
                Prop6 = new string[] { "va1", "val2", "val3" }
            };


            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(1, miw.MatchedParameters());
            Assert.AreEqual(input, output);
        }
Пример #5
0
        public void FromMethodInfo_DoesNotAllow_AsyncVoid_Steps()
        {
            //arrange.
            var featureInstance         = new FeatureWithAsyncVoidStep();
            var methodInfoWithAsyncVoid = typeof(FeatureWithAsyncVoidStep).GetMethod(nameof(FeatureWithAsyncVoidStep.StepWithAsyncVoid));

            //act / assert.
            Assert.Throws <InvalidOperationException>(() => MethodInfoWrapper.FromMethodInfo(methodInfoWithAsyncVoid, featureInstance));
        }
Пример #6
0
        public async Task InvokeMethod_Invokes_Underlying_Async_Method()
        {
            //arrange.
            var target = new ClassWithMethod();
            var sut    = MethodInfoWrapper.FromMethodInfo(target.GetType().GetMethod(nameof(ClassWithMethod.MethodToCallAsync)), target);

            //act.
            await sut.InvokeMethodAsync(null);

            //assert.
            Assert.True(target.Called);
        }
Пример #7
0
        public void GetMethodName_Returns_Wrapped_Method_Name()
        {
            //arrange.
            var target = new ClassWithMethod();
            var sut    = MethodInfoWrapper.FromMethodInfo(target.GetType().GetMethod(nameof(ClassWithMethod.MethodToCall)), target);

            //act.
            var name = sut.GetMethodName();

            //assert.
            Assert.Equal(nameof(ClassWithMethod.MethodToCall), name);
        }
Пример #8
0
        public MethodWriter(GenerationManifest artifacts, FrameworkVersion version, MethodInfoWrapper methodInfo)
            : base(artifacts, version, methodInfo)
        {
            this._methodInfo = methodInfo;

            this._isFakeAsync = this._methodInfo.FullName == "Amazon.Lambda.Model.InvokeAsyncResponse InvokeAsync(Amazon.Lambda.Model.InvokeAsyncRequest)";

            if (_isFakeAsync || !this._methodInfo.Name.EndsWith("Async", StringComparison.Ordinal))
            {
                //This is not an Async method. Lookup if an Async version exists for .NET Core.
                this._hasAsyncVersion = NDocUtilities.FindDocumentationAsync(Artifacts.NDocForPlatform("netcoreapp3.1"), methodInfo) != null;
            }
        }
Пример #9
0
        public void IsSameAs_Identifies_Similar_Instances()
        {
            //arrange.
            var target = new ClassWithMethod();
            var sut    = MethodInfoWrapper.FromMethodInfo(target.GetType().GetMethod(nameof(ClassWithMethod.MethodToCall)), target);
            var other  = MethodInfoWrapper.FromMethodInfo(target.GetType().GetMethod(nameof(ClassWithMethod.MethodToCall)), target);

            //act.
            var same = sut.IsSameAs(other) && other.IsSameAs(sut);

            //assert.
            Assert.True(same);
        }
Пример #10
0
 public MethodWriter(GenerationManifest artifacts, FrameworkVersion version, MethodInfoWrapper methodInfo)
     : base(artifacts, version, methodInfo)
 {
     this._methodInfo = methodInfo;
     // true when this is an Async method and the unity version is present
     this._unityVersionOfAsyncExists = NDocUtilities.FindDocumentationUnityAsync(Artifacts.NDocForPlatform("unity"), methodInfo) != null;
     // refer to asynchronous versions if the synchronous version doesn't exist but the async version does
     this._referAsyncAlternativeUnity = (NDocUtilities.FindDocumentationUnityAsyncAlternative(Artifacts.NDocForPlatform("unity"), methodInfo) != null) &&
         (Artifacts.NDocForPlatform("unity") != null) &&
         (NDocUtilities.FindDocumentation(Artifacts.NDocForPlatform("unity"), methodInfo) == null);
     this._referAsyncAlternativePCL = (NDocUtilities.FindDocumentationPCLAsyncAlternative(Artifacts.NDocForPlatform("pcl"), methodInfo) != null) &&
         (Artifacts.NDocForPlatform("pcl") != null) &&
         (NDocUtilities.FindDocumentation(Artifacts.NDocForPlatform("pcl"), methodInfo) == null);
 }
Пример #11
0
 public MethodWriter(GenerationManifest artifacts, FrameworkVersion version, MethodInfoWrapper methodInfo)
     : base(artifacts, version, methodInfo)
 {
     this._methodInfo = methodInfo;
     // true when this is an Async method and the unity version is present
     this._unityVersionOfAsyncExists = NDocUtilities.FindDocumentationUnityAsync(Artifacts.NDocForPlatform("unity"), methodInfo) != null;
     // refer to asynchronous versions if the synchronous version doesn't exist but the async version does
     this._referAsyncAlternativeUnity = (NDocUtilities.FindDocumentationUnityAsyncAlternative(Artifacts.NDocForPlatform("unity"), methodInfo) != null) &&
                                        (Artifacts.NDocForPlatform("unity") != null) &&
                                        (NDocUtilities.FindDocumentation(Artifacts.NDocForPlatform("unity"), methodInfo) == null);
     this._referAsyncAlternativePCL = (NDocUtilities.FindDocumentationPCLAsyncAlternative(Artifacts.NDocForPlatform("pcl"), methodInfo) != null) &&
                                      (Artifacts.NDocForPlatform("pcl") != null) &&
                                      (NDocUtilities.FindDocumentation(Artifacts.NDocForPlatform("pcl"), methodInfo) == null);
 }
        public void MapObjectToSingleStringParam_NoParameterShouldMatch()
        {
            // Arrange
            var handler = new FakeHandler();
            var method = handler.GetType().GetMethod("OneStringParam");
            var miw = new MethodInfoWrapper<FakeHandler>(method);
            var input = new { test1 = "value1", test2 = "value2" };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(0, miw.MatchedParameters());
        }
Пример #13
0
        public void MapObjectToSingleStringParam_NoParameterShouldMatch()
        {
            // Arrange
            var handler = new FakeHandler();
            var method  = handler.GetType().GetMethod("OneStringParam");
            var miw     = new MethodInfoWrapper <FakeHandler>(method);
            var input   = new { test1 = "value1", test2 = "value2" };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(0, miw.MatchedParameters());
        }
        public void OneStringParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method = handler.GetType().GetMethod("OneStringParam");
            var miw = new MethodInfoWrapper<FakeHandler>(method);
            var input = new { param1 = "value1" };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(1, miw.MatchedParameters());
            Assert.AreEqual(input.param1, output.param1);
        }
Пример #15
0
        public void OneStringParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method  = handler.GetType().GetMethod("OneStringParam");
            var miw     = new MethodInfoWrapper <FakeHandler>(method);
            var input   = new { param1 = "value1" };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(1, miw.MatchedParameters());
            Assert.AreEqual(input.param1, output.param1);
        }
        /// <summary>
        /// Registers an object for message handling
        /// </summary>
        /// <typeparam name="TMessage">message type</typeparam>
        /// <param name="injectionScope"></param>
        /// <param name="injectionContext"></param>
        /// <param name="injectionTaget"></param>
        /// <param name="messageHandlerInfo"></param>
        /// <param name="token"></param>
        /// <param name="holdRefernce"></param>
        /// <param name="background"></param>
        public static void RegisterMethodAsMessageHandler <TMessage>(IInjectionScope injectionScope,
                                                                     IInjectionContext injectionContext,
                                                                     object injectionTaget,
                                                                     MethodInfoWrapper messageHandlerInfo,
                                                                     object token,
                                                                     bool holdRefernce,
                                                                     bool background)
        {
            Action <TMessage> messageHandler = (Action <TMessage>)messageHandlerInfo.MethodInfo.CreateDelegate(typeof(Action <TMessage>), injectionTaget);

            IDispatchedMessenger messenger = injectionScope.Locate <IDispatchedMessenger>();

            if (messenger == null)
            {
                throw new Exception("Attempting to register handler " + messageHandlerInfo.MethodInfo.Name + " and could not locate IDispatchedMessenger");
            }

            messenger.Register(messageHandler, token, holdRefernce, background);
        }
Пример #17
0
        public void MultiTypeParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method  = handler.GetType().GetMethod("MultiTypeParam");
            var miw     = new MethodInfoWrapper <FakeHandler>(method);
            var input   = new {
                param1 = "value1",
                param2 = 10,
                param3 = 10.50,
                param4 = true,
                param5 = DateTime.Now,
                param6 = new List <string> {
                    "value1", "value2", "value3"
                },
                param7 = new FakeObject
                {
                    Prop1 = "val1",
                    Prop2 = 20,
                    Prop3 = 20.5,
                    Prop4 = true,
                    Prop5 = DateTime.Now,
                    Prop6 = new string[] { "va1", "val2", "val3" }
                }
            };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(7, miw.MatchedParameters());
            Assert.AreEqual(input.param1, output.param1);
            Assert.AreEqual(input.param2, output.param2);
            Assert.AreEqual(input.param3, output.param3);
            Assert.AreEqual(input.param4, output.param4);
            Assert.AreEqual(input.param5, output.param5);
            Assert.AreEqual(input.param6, output.param6);
            Assert.AreEqual(input.param7, output.param7);
        }
Пример #18
0
        void AddMethod(TextWriter writer, MethodInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"publicMethod\" src=\"{0}/resources/blank.gif\" title=\"Public Method\" alt=\"Public Method\"/>", RootRelativePath);
            if (info.IsStatic)
            {
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Method\" alt=\"Static Method\"/>", RootRelativePath);
            }
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"{0}/items/{1}/{2}\">{3}({4})</a>",
                             RootRelativePath,
                             GenerationManifest.OutputSubFolderFromNamespace(info.DeclaringType.Namespace),
                             FilenameGenerator.GenerateFilename(info),
                             info.Name,
                             FormatParameters(info.GetParameters()));
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            string html        = string.Empty;
            var    isInherited = !info.DeclaringType.Equals(_versionType);

            if (isInherited)
            {
                html = string.Format("Inherited from {0}.{1}.", info.DeclaringType.Namespace, info.DeclaringType.Name);
            }
            else
            {
                var docs = NDocUtilities.FindDocumentation(info);
                html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);
            }
            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
        public void MultiTypeParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method = handler.GetType().GetMethod("MultiTypeParam");
            var miw = new MethodInfoWrapper<FakeHandler>(method);
            var input = new {
                            param1 = "value1",
                            param2 = 10,
                            param3 = 10.50 ,
                            param4 = true ,
                            param5 = DateTime.Now ,
                            param6 = new List<string> { "value1", "value2", "value3" },
                            param7 = new FakeObject
                                         {
                                             Prop1 = "val1",
                                             Prop2 = 20,
                                             Prop3 = 20.5,
                                             Prop4 = true,
                                             Prop5 = DateTime.Now,
                                             Prop6 = new string[] { "va1", "val2", "val3" }
                                         }
                           };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(7, miw.MatchedParameters());
            Assert.AreEqual(input.param1, output.param1);
            Assert.AreEqual(input.param2, output.param2);
            Assert.AreEqual(input.param3, output.param3);
            Assert.AreEqual(input.param4, output.param4);
            Assert.AreEqual(input.param5, output.param5);
            Assert.AreEqual(input.param6, output.param6);
            Assert.AreEqual(input.param7, output.param7);
        }
Пример #20
0
        void AddMethod(TextWriter writer, MethodInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"publicMethod\" src=\"{0}/resources/blank.gif\" title=\"Public Method\" alt=\"Public Method\"/>", RootRelativePath);
            if (info.IsStatic)
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Method\" alt=\"Static Method\"/>", RootRelativePath);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"./{0}\">{1}({2})</a>", FilenameGenerator.GenerateFilename(info), info.Name, FormatParameters(info.GetParameters()));
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            var docs = NDocUtilities.FindDocumentation(this._currentNDoc, info);
            var html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);

            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
Пример #21
0
 public MethodWriter(GenerationManifest artifacts, FrameworkVersion version, MethodInfoWrapper methodInfo)
     : base(artifacts, version, methodInfo)
 {
     this._methodInfo = methodInfo;
 }
Пример #22
0
 public MethodWriter(GenerationManifest artifacts, FrameworkVersion version, MethodInfoWrapper methodInfo)
     : base(artifacts, version, methodInfo)
 {
     this._methodInfo = methodInfo;
 }
Пример #23
0
        void AddMethod(TextWriter writer, MethodInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"publicMethod\" src=\"{0}/resources/blank.gif\" title=\"Public Method\" alt=\"Public Method\"/>", RootRelativePath);
            if (info.IsStatic)
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Method\" alt=\"Static Method\"/>", RootRelativePath);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"{0}/items/{1}/{2}\">{3}({4})</a>",
                RootRelativePath,
                GenerationManifest.OutputSubFolderFromNamespace(info.DeclaringType.Namespace),
                FilenameGenerator.GenerateFilename(info),
                info.Name,
                FormatParameters(info.GetParameters()));
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            string html = string.Empty;
            if (_versionType.Namespace != info.DeclaringType.Namespace)
            {
                html = string.Format("Inherited from {0}.{1}.", info.DeclaringType.Namespace, info.DeclaringType.Name);
            }
            else {
                var docs = NDocUtilities.FindDocumentation(info);
                html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);
            }
            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
        public void SingleObjectParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method = handler.GetType().GetMethod("SingleObjectParam");
            var miw = new MethodInfoWrapper<FakeHandler>(method);
            var input = new FakeObject
                           {
                               Prop1 = "val1",
                               Prop2 = 20,
                               Prop3 = 20.5,
                               Prop4 = true,
                               Prop5 = DateTime.Now,
                               Prop6 = new string[] { "va1", "val2", "val3" }
                           };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(1, miw.MatchedParameters());
            Assert.AreEqual(input, output);
        }
Пример #25
0
        public string GenerateSyntax(MethodInfoWrapper info)
        {
            var syntax = new SyntaxWriter(this._version);

            if (info.IsPublic)
                syntax.WriteToken("public");

            if (info.IsAbstract)
                syntax.WriteToken("abstract");

            if (info.IsVirtual)
                syntax.WriteToken("virtual");

            syntax.WriteTypeName(info.ReturnType);

            syntax.WriteRaw(" " + info.Name);
            var parameters = info.GetParameters();
            AddParameters(syntax, parameters);

            return syntax.CurrentSyntax;
        }
        public void SingleArrayOfObjectParam()
        {
            // Arrange
            var handler = new FakeHandler();
            var method = handler.GetType().GetMethod("SingleArrayOfObjectParam");
            var miw = new MethodInfoWrapper<FakeHandler>(method);
            var input = new
            {
                queryData = new[] {
                                    new FakeObject { Prop1 = "val1", Prop2 = 10, Prop3 = 10.5 },
                                    new FakeObject { Prop1 = "val2", Prop2 = 20, Prop3 = 20.5 },
                                    new FakeObject { Prop1 = "val3", Prop2 = 30, Prop3 = 30.5 }
                            }
            };

            // Act
            miw.BindValues(JObject.FromObject(input));
            dynamic output = miw.Invoke(handler);

            // Assert
            Assert.AreEqual(1, miw.MatchedParameters());
            Assert.AreEqual(input.queryData, output);
        }