mirror of
https://github.com/zoriya/octokit.net.git
synced 2025-12-05 23:06:10 +00:00
51 lines
2.0 KiB
C#
51 lines
2.0 KiB
C#
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
|
|
"There are some overloads which are confusing the convention tests. Check everything is okay in these types:\r\n{0}\r\n{1}\r\n{2}\r\n{3}"
|
|
.FormatWithNewLine(
|
|
clientInterface.Name,
|
|
formattedMainMethods,
|
|
observableInterface.Name,
|
|
formattedObservableMethods);
|
|
}
|
|
}
|
|
} |