public void MemberInfoComparer_ArgumentChecking()
        {
            var eq = new MemberInfoEqualityComparer();

            AssertEx.ThrowsException <ArgumentNullException>(() => eq.ResolveMember(targetType: null, typeof(object).GetMethods().First()), ex => Assert.AreEqual("targetType", ex.ParamName));
            AssertEx.ThrowsException <ArgumentNullException>(() => eq.ResolveMember(typeof(object), member: null), ex => Assert.AreEqual("member", ex.ParamName));
        }
        private static void AssertEqual(MemberInfo m1, MemberInfo m2)
        {
            var eq = new MemberInfoEqualityComparer();

            Assert.IsTrue(eq.Equals(m1, m2));
            Assert.AreEqual(eq.GetHashCode(m1), eq.GetHashCode(m2));
        }
 public void SutIsWeaklyTypedEqualityComparer()
 {
     // Fixture setup
     // Exercise system
     var sut = new MemberInfoEqualityComparer();
     // Verify outcome
     Assert.IsAssignableFrom<IEqualityComparer>(sut);
     // Teardown
 }
示例#4
0
        public void StronglyTypedGetHashCodeWithNullShouldNotThrowAsExceptionIsNotExpectedThere()
        {
            // Arrange
            var sut = new MemberInfoEqualityComparer();

            // Act & assert
            Assert.Null(Record.Exception(() =>
                                         sut.GetHashCode(null)));
        }
示例#5
0
        public void SutIsWeaklyTypedEqualityComparer()
        {
            // Arrange
            // Act
            var sut = new MemberInfoEqualityComparer();

            // Assert
            Assert.IsAssignableFrom <IEqualityComparer>(sut);
        }
示例#6
0
        public void WeaklyTypedGetHashCodeOfNullThrows()
        {
            // Arrange
            IEqualityComparer sut = new MemberInfoEqualityComparer();

            // Act & assert
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.GetHashCode(null));
        }
 public void WeaklyTypedEqualsReturnsCorrectResult(object x, object y, bool expectedResult)
 {
     // Fixture setup
     IEqualityComparer sut = new MemberInfoEqualityComparer();
     // Exercise system
     var result = sut.Equals(x, y);
     // Verify outcome
     Assert.Equal(expectedResult, result);
     // Teardown
 }
        public void SutIsWeaklyTypedEqualityComparer()
        {
            // Fixture setup
            // Exercise system
            var sut = new MemberInfoEqualityComparer();

            // Verify outcome
            Assert.IsAssignableFrom <IEqualityComparer>(sut);
            // Teardown
        }
        public void StronglyTypedGetHashCodeWithNullSutThrows()
        {
            // Fixture setup
            var sut = new MemberInfoEqualityComparer();

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.GetHashCode(null));
            // Teardown
        }
 public void StronglyTypeEqualsReturnsCorrectResult(MemberInfo x, MemberInfo y, bool expectedResult)
 {
     // Fixture setup
     var sut = new MemberInfoEqualityComparer();
     // Exercise system
     var result = sut.Equals(x, y);
     // Verify outcome
     Assert.Equal(expectedResult, result);
     // Teardown
 }
示例#11
0
#pragma warning restore xUnit1010 // Value is not convertiable to the MemberInfo
        public void StronglyTypedEqualsReturnsCorrectResult(MemberInfo x, MemberInfo y, bool expectedResult)
        {
            // Arrange
            var sut = new MemberInfoEqualityComparer();
            // Act
            var result = sut.Equals(x, y);

            // Assert
            Assert.Equal(expectedResult, result);
        }
        public void MemberInfoComparer_Custom_ThrowsNotImplemented()
        {
            var eq      = new MemberInfoEqualityComparer();
            var custom1 = new MyCustomMemberInfo();
            var custom2 = new MyCustomMemberInfo();

            Assert.ThrowsException <NotImplementedException>(() => eq.Equals(custom1, custom2));
            Assert.ThrowsException <NotImplementedException>(() => eq.GetHashCode(custom1));
            Assert.ThrowsException <NotImplementedException>(() => eq.ResolveMember(typeof(object), custom1));
        }
示例#13
0
        public void WeaklyTypedEqualsReturnsCorrectResult(object x, object y, bool expectedResult)
        {
            // Arrange
            IEqualityComparer sut = new MemberInfoEqualityComparer();
            // Act
            var result = sut.Equals(x, y);

            // Assert
            Assert.Equal(expectedResult, result);
        }
示例#14
0
        public void StronglyTypedGetHashCodeWithNullShouldNotThrowAsExceptionIsNotExpectedThere()
        {
            // Fixture setup
            var sut = new MemberInfoEqualityComparer();

            // Exercise system and verify outcome
            Assert.Null(Record.Exception(() =>
                                         sut.GetHashCode(null)));
            // Teardown
        }
示例#15
0
        public void WeaklyTypedGetHashCodeReturnsCorrectResultForNonMemberInfos(object obj)
        {
            // Arrange
            IEqualityComparer sut = new MemberInfoEqualityComparer();
            // Act
            var result = sut.GetHashCode(obj);
            // Assert
            var expectedHashCode = obj.GetHashCode();

            Assert.Equal(expectedHashCode, result);
        }
        public void MemberInfoComparer_Default_ThrowsNotSupported()
        {
            var eq = new MemberInfoEqualityComparer();

            var member1 = new MyMemberInfo();
            var member2 = new MyMemberInfo();

            Assert.ThrowsException <NotSupportedException>(() => eq.Equals(member1, member2));
            Assert.ThrowsException <NotSupportedException>(() => eq.GetHashCode(member1));
            Assert.ThrowsException <NotSupportedException>(() => eq.ResolveMember(typeof(object), member1));
        }
        public void WeaklyTypedEqualsReturnsCorrectResult(object x, object y, bool expectedResult)
        {
            // Fixture setup
            IEqualityComparer sut = new MemberInfoEqualityComparer();
            // Exercise system
            var result = sut.Equals(x, y);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
        public void StronglyTypeEqualsReturnsCorrectResult(MemberInfo x, MemberInfo y, bool expectedResult)
        {
            // Fixture setup
            var sut = new MemberInfoEqualityComparer();
            // Exercise system
            var result = sut.Equals(x, y);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
示例#19
0
        public void WeaklyTypedGetHashCodeReturnsCorrectResultForTypes(Type t)
        {
            // Arrange
            IEqualityComparer sut = new MemberInfoEqualityComparer();
            // Act
            var result = sut.GetHashCode(t);
            // Assert
            var expectedHashCode = t.Name.GetHashCode();

            Assert.Equal(expectedHashCode, result);
        }
        public void WeaklyTypedGetHashCodeReturnsCorrectResultForTypes(Type t)
        {
            // Fixture setup
            IEqualityComparer sut = new MemberInfoEqualityComparer();
            // Exercise system
            var result = sut.GetHashCode(t);
            // Verify outcome
            var expectedHashCode = t.Name.GetHashCode();

            Assert.Equal(expectedHashCode, result);
            // Teardown
        }
示例#21
0
        public void EqualsOfDerivedAndDeclaredPropertyReturnsCorrectResult()
        {
            // Arrange
            var sut = new MemberInfoEqualityComparer();
            var declaredProperty = typeof(AbstractType).GetProperty("Property1");
            var derivedProperty  = typeof(ConcreteType).GetProperty("Property1");
            // Act
            var result = sut.Equals(derivedProperty, declaredProperty);

            // Assert
            Assert.True(result);
        }
示例#22
0
        public void WeaklyTypedGetHashCodeReturnsCorrectResultForPropertyInfo()
        {
            // Arrange
            IEqualityComparer sut = new MemberInfoEqualityComparer();
            var propertyInfo      = typeof(PropertyHolder <object>).GetProperty("Property");
            // Act
            var result = sut.GetHashCode(propertyInfo);
            // Assert
            var expectedHashCode = propertyInfo.DeclaringType.GetHashCode() ^ propertyInfo.Name.GetHashCode();

            Assert.Equal(expectedHashCode, result);
        }
示例#23
0
        public void EqualsOfPropertyAndTypeReturnsCorrectResult()
        {
            // Arrange
            var sut = new MemberInfoEqualityComparer();
            var pi  = typeof(ConcreteType).GetProperty("Property4");
            var t   = typeof(object).GetTypeInfo();
            // Act
            var actual = sut.Equals(pi, t);

            // Assert
            Assert.False(actual);
        }
 public void EqualsOfDeclaredAndDerivedPropertyReturnsCorrectResult()
 {
     // Fixture setup
     var sut = new MemberInfoEqualityComparer();
     var declaredProperty = typeof(AbstractType).GetProperty("Property1");
     var derivedProperty = typeof(ConcreteType).GetProperty("Property1");
     // Exercise system
     var result = sut.Equals(declaredProperty, derivedProperty);
     // Verify outcome
     Assert.True(result);
     // Teardown
 }
        public void ComparerIsCorrect()
        {
            // Arrange
            var dummyComposer          = new Fixture();
            IEqualityComparer expected = new MemberInfoEqualityComparer();
            var sut = new CopyAndUpdateAssertion(dummyComposer, expected);
            // Act
            IEqualityComparer actual = sut.Comparer;

            // Assert
            Assert.Equal(expected, actual);
        }
示例#26
0
        public void EqualsOfPropertyAndTypeReturnsCorrectResult()
        {
            // Fixture setup
            var sut = new MemberInfoEqualityComparer();
            var pi  = typeof(ConcreteType).GetProperty("Property4");
            var t   = typeof(object).GetTypeInfo();
            // Exercise system
            var actual = sut.Equals(pi, t);

            // Verify outcome
            Assert.False(actual);
            // Teardown
        }
        public void WeaklyTypedGetHashCodeReturnsCorrectResultForPropertyInfo()
        {
            // Fixture setup
            IEqualityComparer sut = new MemberInfoEqualityComparer();
            var propertyInfo      = typeof(PropertyHolder <object>).GetProperty("Property");
            // Exercise system
            var result = sut.GetHashCode(propertyInfo);
            // Verify outcome
            var expectedHashCode = propertyInfo.DeclaringType.GetHashCode() ^ propertyInfo.Name.GetHashCode();

            Assert.Equal(expectedHashCode, result);
            // Teardown
        }
        public void EqualsOfDerivedAndDeclaredPropertyReturnsCorrectResult()
        {
            // Fixture setup
            var sut = new MemberInfoEqualityComparer();
            var declaredProperty = typeof(AbstractType).GetProperty("Property1");
            var derivedProperty  = typeof(ConcreteType).GetProperty("Property1");
            // Exercise system
            var result = sut.Equals(derivedProperty, declaredProperty);

            // Verify outcome
            Assert.True(result);
            // Teardown
        }
示例#29
0
        public void ComparerIsCorrect()
        {
            // Fixture setup
            var dummyComposer          = new Fixture();
            IEqualityComparer expected = new MemberInfoEqualityComparer();
            var sut = new CopyAndUpdateAssertion(dummyComposer, expected);
            // Exercise system
            IEqualityComparer actual = sut.Comparer;

            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
        private static void AssertNotEqual(MemberInfo m1, MemberInfo m2)
        {
            var eq = new MemberInfoEqualityComparer();

            Assert.IsFalse(eq.Equals(m1, m2));
        }
 public void StronglyTypedGetHashCodeWithNullSutThrows()
 {
     // Fixture setup
     var sut = new MemberInfoEqualityComparer();
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() =>
         sut.GetHashCode(null));
     // Teardown
 }
 public void WeaklyTypedGetHashCodeReturnsCorrectResultForPropertyInfo()
 {
     // Fixture setup
     IEqualityComparer sut = new MemberInfoEqualityComparer();
     var propertyInfo = typeof(PropertyHolder<object>).GetProperty("Property");
     // Exercise system
     var result = sut.GetHashCode(propertyInfo);
     // Verify outcome
     var expectedHashCode = propertyInfo.DeclaringType.GetHashCode() ^ propertyInfo.Name.GetHashCode();
     Assert.Equal(expectedHashCode, result);
     // Teardown
 }
 public void WeaklyTypedGetHashCodeReturnsCorrectResultForTypes(Type t)
 {
     // Fixture setup
     IEqualityComparer sut = new MemberInfoEqualityComparer();
     // Exercise system
     var result = sut.GetHashCode(t);
     // Verify outcome
     var expectedHashCode = t.Name.GetHashCode();
     Assert.Equal(expectedHashCode, result);
     // Teardown
 }
 /// <summary>
 /// Instantiates an equality comparer for structural types, using the given structural member info comparer.
 /// </summary>
 /// <param name="memberComparer">The member comparer.</param>
 public StructuralTypeEqualityComparator(MemberInfoEqualityComparer memberComparer)
 {
     TypeMap        = new Dictionary <Type, Type>();
     MemberComparer = memberComparer;
 }
 public void EqualsOfPropertyAndTypeReturnsCorrectResult()
 {
     // Fixture setup
     var sut = new MemberInfoEqualityComparer();
     var pi = typeof(ConcreteType).GetProperty("Property4");
     var t = typeof(object);
     // Exercise system
     var actual = sut.Equals(pi, t);
     // Verify outcome
     Assert.False(actual);
     // Teardown
 }