public void TestClone() { Placemark placemark = null; Assert.That(() => placemark.Clone(), Throws.TypeOf <ArgumentNullException>()); placemark = new Placemark(); placemark.Id = "ID"; placemark.Geometry = new Point(); var clone = placemark.Clone(); Assert.That(clone, Is.Not.SameAs(placemark)); Assert.That(clone.Id, Is.EqualTo(placemark.Id)); // Test attribute Assert.That(clone.Geometry, Is.Not.Null); // Test element // Make sure as we change one the other doesn't ((Point)clone.Geometry).Extrude = true; Assert.That(((Point)clone.Geometry).Extrude, Is.Not.EqualTo(((Point)placemark.Geometry).Extrude)); Folder folder = new Folder(); folder.AddFeature(placemark); folder.AddFeature(new Document()); var copy = folder.Clone(); Assert.That(copy.Features.Count(), Is.EqualTo(folder.Features.Count())); placemark.Id = "changed"; Assert.That(folder.FindFeature(placemark.Id), Is.Not.Null); Assert.That(copy.FindFeature(placemark.Id), Is.Null); }