Example #1
0
        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);
            }
        }
Example #2
0
        public void TestTreeNodesConvertToObject()
        {
            var resultObject = new TestReadonlyModel();

            new ObjectPopulator().Populate(collection, resultObject);

            CheckTestReadonlyModel(resultObject);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }