public void DeserializeTypeMismatchTest()
        {
            var testClassPath = GetTempFileName("xml");

            Assert.NotNull(testClassPath);
            var first     = "bob";
            var last      = "smith";
            var testClass = new XTestClassWith2Properties(first, last);;

            Assert.AreEqual(first, testClass.First);
            Assert.AreEqual(last, testClass.Last);
            Assert.IsInstanceOf <XTestClassWith2Properties>(testClass);

            if (File.Exists(testClassPath))
            {
                File.Delete(testClassPath);
            }
            Assert.IsFalse(File.Exists(testClassPath));

            serialize(testClass, testClassPath, null);
            Assert.IsTrue(File.Exists(testClassPath));

            var deserialized = deserialize <XTestClassWith2Properties>(testClassPath, null);

            Assert.IsInstanceOf <XTestClassWith2Properties>(deserialized);
            Assert.AreEqual(testClass, deserialized);

            // Attempt to deserialize with type mis-match
            Assert.Throws <InvalidOperationException>(() => deserialize <XTestClassWithList>(testClassPath, null));

            if (File.Exists(testClassPath))
            {
                File.Delete(testClassPath);
            }
        }
        public void SerializeDeserializeClassTest()
        {
            var testClassPath = GetTempFileName("xml");
            var first         = "bob";
            var last          = "smith";
            var testClass     = new XTestClassWith2Properties(first, last);

            Assert.IsInstanceOf <XTestClassWith2Properties>(testClass);

            Assert.AreEqual(first, testClass.First);
            Assert.AreEqual(last, testClass.Last);

            if (File.Exists(testClassPath))
            {
                File.Delete(testClassPath);
            }
            Assert.IsFalse(File.Exists(testClassPath));

            serialize(testClass, testClassPath, null);
            Assert.IsTrue(File.Exists(testClassPath));

            var deserialized = deserialize <XTestClassWith2Properties>(testClassPath, null);

            Assert.IsInstanceOf <XTestClassWith2Properties>(deserialized);
            Assert.AreEqual(testClass, deserialized);
            Assert.IsTrue(testClass.Equals(deserialized));

            if (File.Exists(testClassPath))
            {
                File.Delete(testClassPath);
            }
        }