Ejemplo n.º 1
0
        public void Can_Deep_Clone()
        {
            DictionaryItem item = _builder
                                  .WithRandomTranslations(2)
                                  .Build();

            var clone = (DictionaryItem)item.DeepClone();

            Assert.AreNotSame(clone, item);
            Assert.AreEqual(clone, item);
            Assert.AreEqual(clone.CreateDate, item.CreateDate);
            Assert.AreEqual(clone.Id, item.Id);
            Assert.AreEqual(clone.ItemKey, item.ItemKey);
            Assert.AreEqual(clone.Key, item.Key);
            Assert.AreEqual(clone.ParentId, item.ParentId);
            Assert.AreEqual(clone.UpdateDate, item.UpdateDate);
            Assert.AreEqual(clone.Translations.Count(), item.Translations.Count());
            for (var i = 0; i < item.Translations.Count(); i++)
            {
                Assert.AreNotSame(clone.Translations.ElementAt(i), item.Translations.ElementAt(i));
                Assert.AreEqual(clone.Translations.ElementAt(i), item.Translations.ElementAt(i));
            }

            // This double verifies by reflection
            PropertyInfo[] allProps = clone.GetType().GetProperties();
            foreach (PropertyInfo propertyInfo in allProps)
            {
                Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(item, null));
            }
        }
Ejemplo n.º 2
0
        public void Can_Deep_Clone()
        {
            var item = new DictionaryItem("blah")
            {
                CreateDate   = DateTime.Now,
                Id           = 8,
                ItemKey      = "blah",
                Key          = Guid.NewGuid(),
                ParentId     = Guid.NewGuid(),
                UpdateDate   = DateTime.Now,
                Translations = new[]
                {
                    new DictionaryTranslation(new Language("en-AU")
                    {
                        CreateDate  = DateTime.Now,
                        CultureName = "en",
                        Id          = 11,
                        IsoCode     = "AU",
                        Key         = Guid.NewGuid(),
                        UpdateDate  = DateTime.Now
                    }, "colour")
                    {
                        CreateDate = DateTime.Now,
                        Id         = 88,
                        Key        = Guid.NewGuid(),
                        UpdateDate = DateTime.Now
                    },
                    new DictionaryTranslation(new Language("en-US")
                    {
                        CreateDate  = DateTime.Now,
                        CultureName = "en",
                        Id          = 12,
                        IsoCode     = "US",
                        Key         = Guid.NewGuid(),
                        UpdateDate  = DateTime.Now
                    }, "color")
                    {
                        CreateDate = DateTime.Now,
                        Id         = 89,
                        Key        = Guid.NewGuid(),
                        UpdateDate = DateTime.Now
                    },
                }
            };

            var clone = (DictionaryItem)item.DeepClone();

            Assert.AreNotSame(clone, item);
            Assert.AreEqual(clone, item);
            Assert.AreEqual(clone.CreateDate, item.CreateDate);
            Assert.AreEqual(clone.Id, item.Id);
            Assert.AreEqual(clone.ItemKey, item.ItemKey);
            Assert.AreEqual(clone.Key, item.Key);
            Assert.AreEqual(clone.ParentId, item.ParentId);
            Assert.AreEqual(clone.UpdateDate, item.UpdateDate);
            Assert.AreEqual(clone.Translations.Count(), item.Translations.Count());
            for (var i = 0; i < item.Translations.Count(); i++)
            {
                Assert.AreNotSame(clone.Translations.ElementAt(i), item.Translations.ElementAt(i));
                Assert.AreEqual(clone.Translations.ElementAt(i), item.Translations.ElementAt(i));
            }

            //This double verifies by reflection
            var allProps = clone.GetType().GetProperties();

            foreach (var propertyInfo in allProps)
            {
                Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(item, null));
            }
        }