public void TestEvolvableObjectSerialization() { SimplePofContext ctx_v1 = new SimplePofContext(); ctx_v1.RegisterUserType(1, typeof(EvolvablePortablePerson), new PortableObjectSerializer(1)); ctx_v1.RegisterUserType(2, typeof(Address), new PortableObjectSerializer(2)); SimplePofContext ctx_v2 = new SimplePofContext(); ctx_v2.RegisterUserType(1, typeof(EvolvablePortablePerson2), new PortableObjectSerializer(1)); ctx_v2.RegisterUserType(2, typeof(Address), new PortableObjectSerializer(2)); EvolvablePortablePerson2 aleks = new EvolvablePortablePerson2("Aleksandar Seovic", new DateTime(1974, 8, 24)); EvolvablePortablePerson2 ana = new EvolvablePortablePerson2("Ana Maria Seovic", new DateTime(2004, 8, 14, 7, 43, 0)); aleks.Address = ana.Address = new Address("208 Myrtle Ridge Rd", "Lutz", "FL", "33549"); aleks.Nationality = ana.Nationality = "Serbian"; aleks.PlaceOfBirth = new Address(null, "Belgrade", "Serbia", "11000"); ana.PlaceOfBirth = new Address("128 Asbury Ave, #401", "Evanston", "IL", "60202"); aleks.Children = new EvolvablePortablePerson2[] { ana }; Stream stream_v2 = new MemoryStream(); ctx_v2.Serialize(new DataWriter(stream_v2), aleks); stream_v2.Position = 0; EvolvablePortablePerson aleks_v1 = (EvolvablePortablePerson)ctx_v1.Deserialize(new DataReader(stream_v2)); EvolvablePortablePerson marija_v1 = new EvolvablePortablePerson("Marija Seovic", new DateTime(1978, 2, 20)); marija_v1.Address = aleks_v1.Address; marija_v1.Children = aleks_v1.Children; aleks_v1.Spouse = marija_v1; Stream stream_v1 = new MemoryStream(); ctx_v1.Serialize(new DataWriter(stream_v1), aleks_v1); stream_v1.Position = 0; EvolvablePortablePerson2 aleks_v2 = (EvolvablePortablePerson2)ctx_v2.Deserialize(new DataReader(stream_v1)); Assert.AreEqual(aleks.Name, aleks_v2.Name); Assert.AreEqual(aleks.Nationality, aleks_v2.Nationality); Assert.AreEqual(aleks.DOB, aleks_v2.DOB); Assert.AreEqual(aleks_v1.Spouse.Name, aleks_v2.Spouse.Name); Assert.AreEqual(aleks.Address.City, aleks_v2.Address.City); Assert.AreEqual(aleks.PlaceOfBirth.City, aleks_v2.PlaceOfBirth.City); }
public void TestEvolvableObjectSerialization() { var ctxV1 = new SimplePofContext(); ctxV1.RegisterUserType(1, typeof(EvolvablePortablePerson), new PortableObjectSerializer(1)); ctxV1.RegisterUserType(2, typeof(Address), new PortableObjectSerializer(2)); ctxV1.IsReferenceEnabled = true; var ctxV2 = new SimplePofContext(); ctxV2.RegisterUserType(1, typeof(EvolvablePortablePerson2), new PortableObjectSerializer(1)); ctxV2.RegisterUserType(2, typeof(Address), new PortableObjectSerializer(2)); ctxV2.IsReferenceEnabled = true; var person12 = new EvolvablePortablePerson2( "Aleksandar Seovic", new DateTime(74, 7, 24)); var person22 = new EvolvablePortablePerson2( "Ana Maria Seovic", new DateTime(104, 7, 14, 7, 43, 0)); var person32 = new EvolvablePortablePerson2( "Art Seovic", new DateTime(107, 8, 12, 5, 20, 0)); var addr = new Address("208 Myrtle Ridge Rd", "Lutz", "FL", "33549"); var addrPOB = new Address("128 Asbury Ave, #401", "Evanston", "IL", "60202"); person12.Address = addr; person22.Address = addr; person12.Nationality = person22.Nationality = "Serbian"; person12.PlaceOfBirth = new Address(null, "Belgrade", "Serbia", "11000"); person22.PlaceOfBirth = addrPOB; person32.PlaceOfBirth = addrPOB; person12.Children = new EvolvablePortablePerson2[] { person22, person32 }; initPOFWriter(); m_pofWriter = new PofStreamWriter(m_writer, ctxV2); m_pofWriter.EnableReference(); m_pofWriter.WriteObject(0, person12); initPOFReader(); m_pofReader = new PofStreamReader(m_reader, ctxV1); var person11 = (EvolvablePortablePerson)m_pofReader.ReadObject(0); var person21 = new EvolvablePortablePerson( "Marija Seovic", new DateTime(78, 1, 20)); person21.Address = person11.Address; person21.Children = person11.Children; person11.Spouse = person21; initPOFWriter(); m_pofWriter = new PofStreamWriter(m_writer, ctxV1); m_pofWriter.EnableReference(); m_pofWriter.WriteObject(0, person11); initPOFReader(); m_pofReader = new PofStreamReader(m_reader, ctxV2); var person = (EvolvablePortablePerson2)m_pofReader.ReadObject(0); Assert.IsTrue(person12.Name.Equals(person.Name)); Assert.IsTrue(person12.Nationality.Equals(person.Nationality)); Assert.IsTrue(person12.DOB.Equals(person.DOB)); Assert.IsTrue(person11.Spouse.Name.Equals(person.Spouse.Name)); Assert.IsTrue(person12.Address.Equals(person.Address)); Assert.IsTrue(person12.PlaceOfBirth.Equals(person.PlaceOfBirth)); Assert.IsTrue(person.Address != person.Children[0].Address); Assert.IsTrue(person.Address != person.Spouse.Address); Assert.IsTrue(person.Children[0] != person.Spouse.Children[0]); Assert.IsTrue(person.Children[1] != person.Spouse.Children[1]); }