IEqualWithUsingConstraintExtensions
Allows specifying a custom comparer for the EqualConstraint.
using NUnit.Framework.Constraints;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace NUnit.Framework
{
[NullableContext(1)]
[Nullable(0)]
public static class IEqualWithUsingConstraintExtensions
{
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, Func<TExpected, TExpected, bool> comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, comparer), constraint.Builder);
}
[System.Runtime.CompilerServices.OverloadResolutionPriority(2)]
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, IEqualityComparer<TExpected> comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, comparer), constraint.Builder);
}
[System.Runtime.CompilerServices.OverloadResolutionPriority(1)]
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, IComparer<TExpected> comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, comparer), constraint.Builder);
}
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, Comparison<TExpected> comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, comparer), constraint.Builder);
}
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TActual, [Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, Func<TActual, TExpected, bool> comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, (Func<object, object, bool>)((object x, object y) => comparer((TActual)x, (TExpected)y))), constraint.Builder);
}
[System.Runtime.CompilerServices.OverloadResolutionPriority(1)]
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TActual, [Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, IComparer<TActual> comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, (Func<object, object, bool>)((object x, object y) => comparer.Compare((TActual)x, (TActual)y) == 0)), constraint.Builder);
}
[System.Runtime.CompilerServices.OverloadResolutionPriority(-1)]
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, IEqualityComparer comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, comparer), constraint.Builder);
}
[System.Runtime.CompilerServices.OverloadResolutionPriority(-2)]
public static EqualUsingConstraint<TExpected> Using<[Nullable(2)] TExpected>(this IEqualWithUsingConstraint<TExpected> constraint, IComparer comparer)
{
return WithUpdatedBuilder(new EqualUsingConstraint<TExpected>(constraint.Expected, comparer), constraint.Builder);
}
private static EqualUsingConstraint<TExpected> WithUpdatedBuilder<[Nullable(2)] TExpected>(EqualUsingConstraint<TExpected> constraint, [Nullable(2)] ConstraintBuilder builder)
{
constraint.Builder = builder;
constraint.Builder?.Replace(constraint);
return constraint;
}
}
}