Beispiel #1
0
        public void TestClone()
        {
            var n1 = new SimpleRect();
            var n2 = new SimpleRect();
            var n3 = new SimpleRect();
            var n4 = new SimpleRect();
            var n5 = new SimpleRect();

            // n1
            //   n2
            //     n4
            //     n5
            //   n3
            n2.Parent = n1;
            n3.Parent = n1;
            n4.Parent = n2;
            n5.Parent = n2;

            n1.Location = new Point(1, 1);
            n2.Location = new Point(2, 2);
            n3.Location = new Point(3, 3);
            n4.Location = new Point(4, 4);
            n5.Location = new Point(5, 5);

            Assert.AreEqual(2, n2.Children.Count);

            var n2clone = n2.CloneFigure();

            Assert.AreNotEqual(n2, n2clone);
            Assert.AreEqual(new Point(2, 2), n2clone.Location);
            Assert.AreEqual(null, n2clone.Parent);
            Assert.AreEqual(2, n2clone.Children.Count);

            Assert.AreEqual(new Point(4, 4), n2clone.Children[0].Location);
            Assert.AreEqual(new Point(5, 5), n2clone.Children[1].Location);
            Assert.AreNotEqual(n4, n2clone.Children[0]);
            Assert.AreNotEqual(n5, n2clone.Children[1]);

            n2clone.Children[0].Location = new Point(40, 40);
            Assert.AreEqual(new Point(40, 40), n2clone.Children[0].Location);
            Assert.AreEqual(new Point(4, 4), n4.Location);
        }