Exemplo n.º 1
0
        public void CloneItem()
        {
            // TODO: moveme
            Definitions.PersistableItem root = CreateRoot("root", "root item");
            root.BoolProperty     = false;
            root.DateTimeProperty = new DateTime(1978, 12, 02);
            root.DoubleProperty   = 3.1412;
            root.IntProperty      = 42;
            root.LinkProperty     = root;
            root.ObjectProperty   = new string[] { "one", "two", "three" };
            root.StringProperty   = "dida";
            engine.Persister.Save(root);

            Definitions.PersistableItem clonedRoot = (Definitions.PersistableItem)root.Clone(true);
            Assert.AreNotEqual(root.ID, clonedRoot.ID);

            engine.Persister.Save(clonedRoot);
            Assert.AreEqual(root.BoolProperty, clonedRoot.BoolProperty);
            Assert.AreEqual(root.DateTimeProperty, clonedRoot.DateTimeProperty);
            Assert.AreEqual(root.DoubleProperty, clonedRoot.DoubleProperty);
            Assert.AreEqual(root.IntProperty, clonedRoot.IntProperty);
            Assert.AreEqual(root.LinkProperty, clonedRoot.LinkProperty);
            Assert.AreEqual(root.ObjectProperty, clonedRoot.ObjectProperty);
            Assert.AreEqual(root.StringProperty, clonedRoot.StringProperty);
            Assert.AreEqual(root.Name, clonedRoot.Name);
            Assert.AreEqual(root.Title, clonedRoot.Title);
            Assert.AreNotEqual(root.ID, clonedRoot.ID);

            foreach (N2.Details.ContentDetail detail in root.Details)
            {
                Assert.IsNotNull(clonedRoot[detail.Name]);
                Assert.AreNotSame(detail, clonedRoot[detail.Name]);
            }
        }