mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-05-31 02:05:39 +00:00
throw a wobbly when you're doing overloads wrong
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace Octokit.Tests.Conventions
|
||||
{
|
||||
public class InterfaceMethodsMismatchException : Exception
|
||||
{
|
||||
public InterfaceMethodsMismatchException(Type observableType, Type clientInterface)
|
||||
: base(CreateMessage(observableType, clientInterface)) { }
|
||||
|
||||
public InterfaceMethodsMismatchException(Type type,Type clientInterface, Exception innerException)
|
||||
: base(CreateMessage(type, clientInterface), innerException) { }
|
||||
|
||||
protected InterfaceMethodsMismatchException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context) { }
|
||||
|
||||
static string Format(ParameterInfo parameterInfo)
|
||||
{
|
||||
return String.Format("{0} {1}", parameterInfo.ParameterType.Name, parameterInfo.Name);
|
||||
}
|
||||
|
||||
static string Format(MethodInfo methodInfo)
|
||||
{
|
||||
var parameters = methodInfo.GetParameters().Select(Format);
|
||||
|
||||
return String.Format("{0} {1}({2})", methodInfo.ReturnType, methodInfo.Name, String.Join(", ", parameters));
|
||||
}
|
||||
|
||||
static string CreateMessage(Type observableInterface, Type clientInterface)
|
||||
{
|
||||
var mainMethods = clientInterface.GetMethodsOrdered();
|
||||
var observableMethods = observableInterface.GetMethodsOrdered();
|
||||
|
||||
var formattedMainMethods = String.Join("\r\n", mainMethods.Select(Format).Select(m => String.Format(" - {0}", m)));
|
||||
var formattedObservableMethods = String.Join("\r\n", observableMethods.Select(Format).Select(m => String.Format(" - {0}", m)));
|
||||
|
||||
return String.Format("There are some overloads which are confusing the convention tests. Check everything is okay in these types:\r\n{0}\r\n{2}\r\n{1}\r\n{3}", clientInterface.Name, observableInterface.Name, formattedMainMethods, formattedObservableMethods);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user