mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-06 03:55:55 +00:00
added better message for parameter mismatch count
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace Octokit.Tests.Conventions
|
||||
{
|
||||
public class ParameterCountMismatchException : Exception
|
||||
{
|
||||
public ParameterCountMismatchException(MethodInfo method, IEnumerable<ParameterInfo> expected, IEnumerable<ParameterInfo> actual)
|
||||
: base(CreateMessage(method, expected, actual)) { }
|
||||
|
||||
public ParameterCountMismatchException(MethodInfo method, IEnumerable<ParameterInfo> expected, IEnumerable<ParameterInfo> actual, Exception innerException)
|
||||
: base(CreateMessage(method, expected, actual), innerException) { }
|
||||
|
||||
protected ParameterCountMismatchException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context) { }
|
||||
|
||||
static string CreateMethodSignature(IEnumerable<ParameterInfo> parameters)
|
||||
{
|
||||
return String.Join(",", parameters.Select(p => String.Format("{0} {1}", p.ParameterType.Name, p.Name)));
|
||||
}
|
||||
|
||||
static string CreateMessage(MethodInfo method, IEnumerable<ParameterInfo> expected, IEnumerable<ParameterInfo> actual)
|
||||
{
|
||||
var expectedMethodSignature = CreateMethodSignature(expected);
|
||||
var actualMethodSignature = CreateMethodSignature(actual);
|
||||
|
||||
return String.Format("Method signature for {0}.{1} must be ({2}) but is ({3})", method.DeclaringType.Name, method.Name, expectedMethodSignature, actualMethodSignature);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -53,6 +53,7 @@
|
||||
<Compile Include="Exception\InterfaceHasAdditionalMethodsException.cs" />
|
||||
<Compile Include="Exception\InterfaceMissingMethodsException.cs" />
|
||||
<Compile Include="Exception\InterfaceNotFoundException.cs" />
|
||||
<Compile Include="Exception\ParameterCountMismatchException.cs" />
|
||||
<Compile Include="Exception\ReturnValueMismatchException.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SyncObservableClients.cs" />
|
||||
|
||||
@@ -93,7 +93,12 @@ namespace Octokit.Tests.Conventions
|
||||
{
|
||||
var mainParameters = mainMethod.GetParametersOrdered();
|
||||
var observableParameters = observableMethod.GetParametersOrdered();
|
||||
Assert.Equal(mainParameters.Length, observableParameters.Length);
|
||||
|
||||
if (mainParameters.Length != observableParameters.Length)
|
||||
{
|
||||
throw new ParameterCountMismatchException(observableMethod, mainParameters, observableParameters);
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
foreach(var mainParameter in mainParameters)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user