Пример #1
0
        public void TestModelMapper()
        {
            var service1 = new ServiceClass()
            {
                Id = new Guid("51438b2f-4cd7-4e02-0000-000100000000"),
                Name = "John",
                Length = 1024,
                Nullable1 = 10,
                Nullable2 = null,
                Pi = 3.14,
                When = DateTime.SpecifyKind(new DateTime(2013, 06, 24, 8, 0, 0), DateTimeKind.Utc),
                AnotherWhen = new TimeSpan(6, 12, 8, 0),
                MaybeId = new Guid("51438b2f-4cd7-4e02-0000-033300000000"),
                Thing = new ServiceThing { Name = "X", Value = "123" },
                Stuff = new List<string> { "A", "B", "C" },
                Links = new List<Guid> { new Guid("51438b2f-4cd7-ff02-0000-000100000000"), new Guid("51438b2f-4cd7-ff02-0000-000200000000") },
                Things = new List<ServiceThing> { new ServiceThing { Name = "Blue", Value="0000FF" }  },
                Mapping = new Dictionary<string, string>
                {
                    { "A", "1" },
                    { "B", "2" },
                    { "C", "2" }
                },
                Contents = "{ \"list\" : [\"1\", \"2\", \"3\"], \"anotherList\" : [\"A\", \"B\", \"C\"] }"
            };

            var data = service1.CopyAsNew<DataClass>();

            var service2 = data.CopyAsNew<ServiceClass>();

            Assert.AreEqual(service1.Id, service2.Id);
            Assert.AreEqual(service1.Name, service2.Name);
            Assert.AreEqual(service1.Length, service2.Length);
            Assert.AreEqual(service1.Nullable1, service2.Nullable1);
            Assert.AreEqual(service1.Nullable2, service2.Nullable2);
            Assert.AreEqual(service1.Pi, service2.Pi);
            Assert.AreEqual(service1.When, service2.When);
            Assert.AreEqual(service1.AnotherWhen, service2.AnotherWhen);
            Assert.AreEqual(service1.MaybeId, service2.MaybeId);
            CollectionAssert.AreEqual(service1.Stuff, service2.Stuff);
            CollectionAssert.AreEqual(service1.Links, service2.Links);
            CollectionAssert.AreEqual(service1.Things, service2.Things);
            CollectionAssert.AreEqual(service1.Mapping, service2.Mapping);
            Assert.AreEqual(service1.Contents, service2.Contents);
        }
Пример #2
0
        public void TestCustomTypeCopying()
        {
            PropertyCopier.ClearTypeConverters();
            PropertyCopier.AddTypeConverter<MyId, ObjectId>(fromValue => new ObjectId(((MyId)fromValue).Id));
            PropertyCopier.AddTypeConverter<ObjectId, MyId>(fromValue => new MyId((ObjectId)fromValue));

            ServiceClass service1 = new ServiceClass()
            {
                Id = MyId.GenerateNewId(),
                Ids = new MyId[] { MyId.GenerateNewId(), MyId.GenerateNewId() },
                MoreIds = new List<MyId> { MyId.GenerateNewId(), MyId.GenerateNewId() }
            };

            var data = service1.CopyAsNew<DataClass>();

            var service2 = data.CopyAsNew<ServiceClass>();

            Assert.AreEqual(service1.Id, service2.Id);
            CollectionAssert.AreEqual(service1.Ids, service2.Ids);
            CollectionAssert.AreEqual(service1.MoreIds, service2.MoreIds);
        }