public void ShouldNotThrowExceptionWithNullReferences()
        {
            var employer = new Employer { Ceo = null };

            var employerClone = employer.Clone();
            
            Assert.IsNull(employerClone.Ceo);
        }
        public void ShouldCloneReference()
        {
            var employer = new Employer { Ceo = new Employee() };

            var employerClone = employer.Clone();

            Assert.IsNotNull(employerClone.Ceo);
            Assert.AreNotSame(employer.Ceo, employerClone.Ceo);
        }
        public void ShouldCloneCollection()
        {
            var employer = new Employer
            {
                Ceo = new Employee(),
                Employees = new List<Employee>
                {
                    new Employee{FirstName="John"},
                    new Employee()
                }
            };

            var employerClone = employer.Clone();

            Assert.AreEqual(2, employerClone.Employees.Count);
            Assert.AreEqual("John", employerClone.Employees.First().FirstName);
        }