public void TestXmlSerialize() { var resultObject = new TestReadonlyModel(); new ObjectPopulator().Populate(collection, resultObject); string xml; using (MemoryStream memoryStream = new MemoryStream()) using (StreamReader stream = new StreamReader(memoryStream)) { DataContractSerializer serializer = new DataContractSerializer(resultObject.GetType()); serializer.WriteObject(memoryStream, resultObject); memoryStream.Position = 0; xml = stream.ReadToEnd(); } using (Stream stream = new MemoryStream()) { byte[] data = System.Text.Encoding.UTF8.GetBytes(xml); stream.Write(data, 0, data.Length); stream.Position = 0; DataContractSerializer deserializer = new DataContractSerializer(typeof(TestReadonlyModel)); var afterXmlObject = deserializer.ReadObject(stream) as TestReadonlyModel; CheckTestReadonlyModel(afterXmlObject); } }
public void TestTreeNodesConvertToObject() { var resultObject = new TestReadonlyModel(); new ObjectPopulator().Populate(collection, resultObject); CheckTestReadonlyModel(resultObject); }
public void TestJsonSerialize() { var resultObject = new TestReadonlyModel(); new ObjectPopulator().Populate(collection, resultObject); var json = Newtonsoft.Json.JsonConvert.SerializeObject(resultObject); var afterJsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject <TestReadonlyModel>(json); CheckTestReadonlyModel(afterJsonObject); }
private void CheckTestReadonlyModel(TestReadonlyModel model) { // check simple property in main model Assert.AreEqual(model.FirstName, "Petrov"); Assert.AreEqual(model.SecondaryName, "Petr"); // check included class to mail model Assert.IsNotNull(model.Salary); // check simple property in included model Assert.AreEqual(model.Salary.Rate, "Eur"); // check field of different type for property Assert.AreEqual(model.Salary.Amount, 10000m); // check dynamic array Assert.NotNull(model.Phones); var mobilePhone = model.Phones.FirstOrDefault(x => x.Type == PhonesType.Mobile); // check element at dynamic array Assert.NotNull(mobilePhone); // check modified property from field Assert.AreEqual(mobilePhone.Number, "5555555"); // repeat test with other item at phones dynamic array var homePhone = model.Phones.FirstOrDefault(x => x.Type == PhonesType.Home); Assert.NotNull(homePhone); Assert.AreEqual(homePhone.Number, "6666666"); // repeat test with other model var homeAddress = model.Address.FirstOrDefault(x => x.Type == LocationType.Home); Assert.NotNull(homeAddress); Assert.AreEqual(homeAddress.City, "Moscow"); Assert.AreEqual(homeAddress.Street, "Petrova"); // repeat test with other item Assert.NotNull(model.WorkInfo); Assert.NotNull(model.WorkInfo.Address); Assert.AreEqual(model.WorkInfo.Address.City, "Kazan"); Assert.AreEqual(model.WorkInfo.Address.Street, "Lenina"); // Test with many attachments Assert.NotNull(model.WorkInfo.Staff); var staffBoss = model.WorkInfo.Staff.FirstOrDefault(x => x.Type == StaffType.Boss); Assert.NotNull(staffBoss); Assert.AreEqual(staffBoss.FirstName, "Ivanov"); Assert.AreEqual(staffBoss.SecondaryName, "Ivan"); Assert.NotNull(staffBoss.Phones); var staffBossMobile = staffBoss.Phones.FirstOrDefault(x => x.Type == PhonesType.Mobile); Assert.NotNull(staffBossMobile); Assert.AreEqual(staffBossMobile.Number, "2222222"); var secStaffBoss = model.WorkInfo.Staff.FirstOrDefault(x => x.Type == StaffType.SecondaryBoss); Assert.NotNull(secStaffBoss); Assert.AreEqual(secStaffBoss.FirstName, "Sidorova"); Assert.AreEqual(secStaffBoss.SecondaryName, "Anna"); Assert.NotNull(secStaffBoss.Phones); var secStaffBossMobile = secStaffBoss.Phones.FirstOrDefault(x => x.Type == PhonesType.Work); Assert.NotNull(secStaffBossMobile); Assert.AreEqual(secStaffBossMobile.Number, "3333333"); var secStaffBossHome = secStaffBoss.Phones.FirstOrDefault(x => x.Type == PhonesType.Home); Assert.NotNull(secStaffBossHome); Assert.AreEqual(secStaffBossHome.Number, "1111111"); Assert.NotNull(model.WorkInfo.Address); }