public void Clone() { var criterium = new IterationCountStopCriterium(10); Assert.IsNotNull(criterium, "A criterium should have been created"); Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum"); var clone = criterium.Clone(); Assert.IsInstanceOfType(typeof(IterationCountStopCriterium), clone, "Wrong criterium type"); var clonedCriterium = clone as IterationCountStopCriterium; Assert.IsNotNull(clonedCriterium); // ReSharper disable PossibleNullReferenceException Assert.AreEqual(criterium.MaximumNumberOfIterations, clonedCriterium.MaximumNumberOfIterations, "Clone failed"); // ReSharper restore PossibleNullReferenceException }