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"); } }
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; }