public void Indexer_NullSourceMember_ThrowsArgumentNullException()
        {
            var service = new TestMemberRelationshipService();

            Assert.Throws <ArgumentNullException>("sourceMember", () => service[new object(), null]);
            Assert.Throws <ArgumentNullException>("sourceMember", () => service[new object(), null] = new MemberRelationship());
        }
        public void Indexer_NoSuchSourceOwnerOrSourceMember_ReturnsEmpty()
        {
            var owner = new object();
            MemberDescriptor member = TypeDescriptor.GetProperties(typeof(TestClass))[0];

            var service = new TestMemberRelationshipService();

            Assert.Equal(MemberRelationship.Empty, service[owner, member]);
        }
        public void Indexer_NullSourceOwner_ThrowsArgumentNullException()
        {
            MemberDescriptor member = TypeDescriptor.GetProperties(typeof(TestClass))[0];

            var service = new TestMemberRelationshipService();

            Assert.Throws <ArgumentNullException>("sourceOwner", () => service[null, member]);
            Assert.Throws <ArgumentNullException>("sourceOwner", () => service[null, member] = new MemberRelationship());

            Assert.Throws <ArgumentException>("source", () => service[new MemberRelationship()]);
            Assert.Throws <ArgumentException>("source", () => service[new MemberRelationship()] = new MemberRelationship());
        }
        public void Indexer_SourceOwnerSourceMember_Success()
        {
            var owner = new object();
            MemberDescriptor member = TypeDescriptor.GetProperties(typeof(TestClass))[0];

            MemberRelationship memberRelationship = new MemberRelationship(new object(), TypeDescriptor.GetProperties(typeof(TestClass))[1]);

            var service = new TestMemberRelationshipService();

            service[owner, member] = memberRelationship;
            Assert.Equal(memberRelationship, service[owner, member]);
        }