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); }
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); }
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); }
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)); }
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); }
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); }
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; } }
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); }
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()); }
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); }
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); }
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); }
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); }
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 MethodWriter(GenerationManifest artifacts, FrameworkVersion version, MethodInfoWrapper methodInfo) : base(artifacts, version, methodInfo) { this._methodInfo = methodInfo; }
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); }
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); }