public IEqualityComparer <T> CreateComparer <T>(IEqualityComparerSource source) { var nonGenericComparer = new FieldsEqualityComparer(source); var genericComparer = new GenericEqualityComparerAdapter <T>(nonGenericComparer); return(genericComparer); }
// methods public IEqualityComparer CreateComparer(Type valueType, IEqualityComparerSource source) { if (OverridesEquals(valueType)) { return(new EqualsEqualityComparer()); } return(_next.CreateComparer(valueType, source)); }
// methods public IEqualityComparer CreateComparer(Type valueType, IEqualityComparerSource source) { foreach (var implementedInterface in valueType.GetTypeInfo().GetInterfaces()) { if (implementedInterface == typeof(IEnumerable)) { return(new EnumerableEqualityComparer(source)); } } return(_next.CreateComparer(valueType, source)); }
public IEqualityComparer <T> CreateComparer <T>(IEqualityComparerSource source) { var valueType = typeof(T); foreach (var implementedInterface in valueType.GetInterfaces()) { if (IsGenericIEnumerableInterface(implementedInterface)) { var itemType = implementedInterface.GetGenericArguments()[0]; var genericComparerType = typeof(EnumerableEqualityComparer <,>).MakeGenericType(new[] { valueType, itemType }); var genericComparerConstructor = genericComparerType.GetConstructor(new[] { typeof(IEqualityComparerSource) }); var genericComparer = (IEqualityComparer <T>)genericComparerConstructor.Invoke(new object[] { source }); return(genericComparer); } } return(_next.CreateComparer <T>(source)); }
public IEqualityComparer <T> CreateComparer <T>(IEqualityComparerSource source) { var valueType = typeof(T); foreach (var implementedInterface in valueType.GetInterfaces()) { if (IsGenericIEquatableInterface(implementedInterface, valueType)) { var genericComparerType = typeof(EqualsEqualityComparer <>).MakeGenericType(valueType); var genericComparerConstructor = genericComparerType.GetConstructor(new Type[0]); var genericComparer = (IEqualityComparer <T>)genericComparerConstructor.Invoke(new object[0]); return(genericComparer); } } if (OverridesEquals(valueType)) { var nonGenericComparer = new EqualsEqualityComparer(); var genericComparer = new GenericEqualityComparerAdapter <T>(nonGenericComparer); return(genericComparer); } return(_next.CreateComparer <T>(source)); }
public static AndConstraint<ObjectAssertions> NotBeUsing(this ObjectAssertions assertions, object unexpected, IEqualityComparerSource source, string because = "", params object[] reasonArgs) { var actual = assertions.Subject; var comparer = actual == null ? ReferenceEqualsEqualityComparer.Instance : source.GetComparer(actual.GetType()); return assertions.NotBeUsing(unexpected, comparer, because, reasonArgs); }
public static AndConstraint <ObjectAssertions> NotBeUsing(this ObjectAssertions assertions, object unexpected, IEqualityComparerSource source, string because = "", params object[] reasonArgs) { var actual = assertions.Subject; var comparer = actual == null ? ReferenceEqualsEqualityComparer.Instance : source.GetComparer(actual.GetType()); return(assertions.NotBeUsing(unexpected, comparer, because, reasonArgs)); }
// constructors public FieldsEqualityComparer(IEqualityComparerSource source) { _source = source; }
// constructors public EnumerableEqualityComparer(IEqualityComparerSource source) { _source = source; }
public static AndConstraint <GenericCollectionAssertions <T> > EqualUsing <T>( this GenericCollectionAssertions <T> assertions, IEnumerable <T> expectation, IEqualityComparerSource source, string because = "", params object[] reasonArgs) { return(assertions.EqualUsing(expectation, source.GetComparer <T>(), because, reasonArgs)); }
// methods public IEqualityComparer CreateComparer(Type valueType, IEqualityComparerSource source) { return(new FieldsEqualityComparer(source)); }