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));
        }
        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));
        }
        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));
        }