public void NothingSet()
        {
            var s = new PersonNameSynchronizer();

            Assert.IsNull(s.Entity);
            Assert.IsNull(s.Key);
        }
        public void SetKey()
        {
            var s = new PersonNameSynchronizer();

            s.Key = "Bob";

            Assert.AreEqual("Bob", s.Key);
            Assert.IsNull(s.Entity);
        }
        public void SetEntityWithDefaultKey()
        {
            var s          = new PersonNameSynchronizer();
            var nullPerson = new Person {
                Name = null
            };

            s.Entity = nullPerson;

            Assert.AreSame(nullPerson, s.Entity);
            Assert.IsNull(s.Key);
        }
        public void SetEntity()
        {
            var s   = new PersonNameSynchronizer();
            var bob = new Person {
                Name = "Bob"
            };

            s.Entity = bob;

            Assert.AreSame(bob, s.Entity);
            Assert.AreEqual("Bob", s.Key);
        }
        public void SetEntityThenClear()
        {
            var s   = new PersonNameSynchronizer();
            var bob = new Person {
                Name = "Bob"
            };

            s.Entity = bob;
            s.Entity = null;

            Assert.IsNull(s.Entity);
            Assert.AreEqual("Bob", s.Key);
        }
        public void SetKeyThenEntity_KeyDoesNotMatchEntity()
        {
            var s   = new PersonNameSynchronizer();
            var bob = new Person {
                Name = "Bob"
            };

            s.Key    = "Robert";
            s.Entity = bob;

            Assert.AreSame(bob, s.Entity);
            Assert.AreEqual("Bob", s.Key);
        }
        public void SetEntityThenKey_KeyMatchesEntityDifferentCase_DefaultComparer()
        {
            var s   = new PersonNameSynchronizer();
            var bob = new Person {
                Name = "Bob"
            };

            s.Entity = bob;
            s.Key    = "bob";

            Assert.AreEqual("bob", s.Key);
            Assert.IsNull(s.Entity);
        }
        public void SetEntityThenKey_KeyDoesNotMatchEntity()
        {
            var s   = new PersonNameSynchronizer();
            var bob = new Person {
                Name = "Bob"
            };

            s.Entity = bob;
            s.Key    = "Robert";

            Assert.AreEqual("Robert", s.Key);
            Assert.IsNull(s.Entity);
        }
        public void SerializeThenDeserialize()
        {
            var s   = new PersonNameSynchronizer();
            var bob = new Person {
                Name = "Bob"
            };

            s.Entity = bob;
            s.Key    = "Bob";

            var clone = SerializeUtils.Clone(s);

            Assert.AreNotSame(s, clone);
            Assert.AreEqual("Bob", clone.Key);
            Assert.AreEqual(bob.Name, clone.Entity.Name);
            Assert.AreNotSame(bob, clone.Entity);
        }