public static MethodDefinition ResolveMethod(TypeDefinition typeDefinition, string methodName, TypeReference[] parameterTypes)
 {
     if (parameterTypes == null)
     {
         _log.Warn("\"ResolveMethod\" overload with parameter types called unnecessarily.");
         return ResolveMethod(typeDefinition, methodName);
     }
     try
     {
         MethodDefinition methodDefinition =
             typeDefinition.Methods.Single(
                 m => m.Name == methodName
                      && m.Parameters.Select(p => p.ParameterType.FullName)
                          .SequenceEqual(parameterTypes.Select(p => p.FullName)));
         _log.Debug("Method \"{0}\" successfully resolved in \"{1}\".", methodName, typeDefinition.FullName);
         return methodDefinition;
     }
     catch (InvalidOperationException)
     {
         _log.Error("Method \"{0}\" with specified parameter types is unrecognised.", methodName);
         throw new ArgumentException(string.Format("Method \"{0}\" with specified parameter types is unrecognised.", methodName), "methodName");
     }
 }
Exemplo n.º 2
0
 private bool RunTests(string targetAssemblyLocation, string targetClass, string targetMethod, TypeReference[] parameterTypes)
 {
     var parameterList = parameterTypes == null || parameterTypes.Length == 0
                             ? null
                             : string.Join(", ", parameterTypes.Select(t => t.Name).ToArray());
     OutputMethod(targetClass, targetMethod, parameterList);
     MutationTest mutationTest =
         parameterTypes == null
             ? (MutationTest)MutationTestBuilder.For(targetAssemblyLocation, targetClass, targetMethod)
             : (MutationTest)MutationTestBuilder.For(targetAssemblyLocation, targetClass, targetMethod, parameterTypes);
     if (_runnerType != null)
     {
         mutationTest.UsingRunner(_runnerType);
     }
     mutationTest.TestAssemblyLocation = _testAssemblyLocation;
     var result = BuildAndRunMutationTest(mutationTest);
     return result;
 }