public void AutoPropertyCopy_TestCopy()
        {
            var testPropertySource = new TestPropertySource();
            var testPropertyTarget = new TestPropertyTarget();

            if (testPropertySource.Property1 == testPropertyTarget.Property1)
            {
                Assert.Inconclusive("the properties are already equal, so cannot be sure that it worked");
            }

            testPropertySource.CopyProperties(testPropertyTarget);

            Assert.AreEqual(testPropertySource.Property1, testPropertyTarget.Property1);
            Assert.AreEqual(testPropertySource.Property2, testPropertyTarget.Property2);
            Assert.AreEqual(testPropertySource.Property3, testPropertyTarget.Property3);
            Assert.AreNotEqual(testPropertySource.Property4, testPropertyTarget.Property4);
            Assert.AreNotEqual(testPropertySource.Property5, testPropertyTarget.Property5);
            Assert.AreEqual(testPropertySource.Property6, testPropertyTarget.Property6);
            Assert.AreEqual(testPropertySource.Property7, testPropertyTarget.Property7);
        }
        public void AutoPropertyCopy_TestCache()
        {
            var testPropertySource = new TestPropertySource();
            var testPropertyTarget1 = new TestPropertyTarget();
            var testPropertyTarget2 = new TestPropertyTarget();

            testPropertySource.CopyProperties(testPropertyTarget1);
            Assert.AreEqual(1, System.AutoPropertyCopy.CacheCount);

            testPropertySource.CopyProperties(testPropertyTarget2);
            Assert.AreEqual(1, System.AutoPropertyCopy.CacheCount);
        }