public IEqualityComparer <T> CreateComparer <T>(IEqualityComparerSource source)
        {
            var nonGenericComparer = new FieldsEqualityComparer(source);
            var genericComparer    = new GenericEqualityComparerAdapter <T>(nonGenericComparer);

            return(genericComparer);
        }
Beispiel #2
0
        // methods
        public IEqualityComparer CreateComparer(Type valueType, IEqualityComparerSource source)
        {
            if (OverridesEquals(valueType))
            {
                return(new EqualsEqualityComparer());
            }

            return(_next.CreateComparer(valueType, source));
        }
Beispiel #3
0
        // 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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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);
 }
Beispiel #7
0
        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;
 }
Beispiel #9
0
 // 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));
 }
 // constructors
 public FieldsEqualityComparer(IEqualityComparerSource source)
 {
     _source = source;
 }
 // methods
 public IEqualityComparer CreateComparer(Type valueType, IEqualityComparerSource source)
 {
     return(new FieldsEqualityComparer(source));
 }
 // constructors
 public EnumerableEqualityComparer(IEqualityComparerSource source)
 {
     _source = source;
 }