public void Equals_GenericClass_GenericMethodFromBaseType() { var methodFromBaseType = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(ProxiedChildGeneric <int, string>), "ProxiedChildGenericToString", 1); var method = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(ProxiedChildChildGeneric <int, string>), "ProxiedChildGenericToString", 1); Assert.That(MethodInfoEqualityComparer.Get.Equals(methodFromBaseType, method), Is.True); }
public void Equals_GenericMethodFromBaseType_NonGenericOverloadInType() { var methodFromBaseType = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(Proxied), "OverloadedGenericToString", 2); var method = ScriptingHelper.GetInstanceMethod(typeof(ProxiedChildChild), "OverloadedGenericToString", new[] { typeof(int), typeof(int) }); Assert.That(MethodInfoEqualityComparer.Get.Equals(methodFromBaseType, method), Is.False); }
public void Equals_MixedArgumentGenericMethodFromNonRelatedTypes() { var method = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(Test1), "MixedArgumentsTest", 2); var methodWithSameSignature = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(Test2), "MixedArgumentsTest", 2); var methodWithSwappedGenericArguments = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(Test3), "MixedArgumentsTest", 2); Assert.That(MethodInfoEqualityComparer.Get.Equals(method, methodWithSameSignature), Is.True); Assert.That(MethodInfoEqualityComparer.Get.Equals(method, methodWithSwappedGenericArguments), Is.False); }
public void Equals_OverloadedGenericMethodFromBaseType() { var methodFromBaseType = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(Proxied), "OverloadedGenericToString", 2); var method = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(ProxiedChildChild), "OverloadedGenericToString", 2); Assert.That(methodFromBaseType, Is.Not.EqualTo(method)); Assert.That(methodFromBaseType.GetBaseDefinition(), Is.Not.EqualTo(method.GetBaseDefinition())); Assert.That(MethodInfoEqualityComparer.Get.Equals(methodFromBaseType, method), Is.True); }
public void Equals_GenericClass_GenericMethodFromBaseType2() { var methodFromBaseType = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(ProxiedChildGeneric <int, string>), "ProxiedChildGenericToString", 2); var methods = ScriptingHelper.GetAnyGenericInstanceMethodArray(typeof(ProxiedChildChildGeneric <int, string>), "ProxiedChildGenericToString", 2); Assert.That(methods.Length, Is.EqualTo(2)); Console.WriteLine(methods[0].Name); Console.WriteLine(methods[1].Name); Console.WriteLine(methodFromBaseType.Name); Console.WriteLine(methods[0].ReturnType); Console.WriteLine(methods[1].ReturnType); Console.WriteLine(methodFromBaseType.ReturnType); Console.WriteLine(methods[0].Attributes); Console.WriteLine(methods[1].Attributes); Console.WriteLine(methodFromBaseType.Attributes); Console.WriteLine("{" + string.Join(",", methods[0].GetParameters().Select(pi => pi.Attributes)) + "}"); Console.WriteLine("{" + string.Join(",", methods[1].GetParameters().Select(pi => pi.Attributes)) + "}"); Console.WriteLine("{" + string.Join(",", methodFromBaseType.GetParameters().Select(pi => pi.Attributes)) + "}"); Console.WriteLine("{" + string.Join(",", methods[0].GetParameters().Select(pi => pi.ParameterType)) + "}"); Console.WriteLine("{" + string.Join(",", methods[1].GetParameters().Select(pi => pi.ParameterType)) + "}"); Console.WriteLine("{" + string.Join(",", methodFromBaseType.GetParameters().Select(pi => pi.ParameterType)) + "}"); var a0 = methods[0].GetParameters()[2]; var a1 = methods[1].GetParameters()[2]; var ax = methodFromBaseType.GetParameters()[2]; var x = methods[0].GetParameters()[2]; Assert.That(methodFromBaseType, Is.Not.EqualTo(methods[0])); Assert.That(methodFromBaseType, Is.Not.EqualTo(methods[1])); Assert.That(MethodInfoEqualityComparer.Get.Equals(methodFromBaseType, methods[1]), Is.True); Assert.That(MethodInfoEqualityComparer.Get.Equals(methodFromBaseType, methods[0]), Is.True); }