public void DoStuff() { var circle1 = new Circle(0, 0, 2); var circle2 = new Circle(5, 5, 10); var circle3 = new Circle(200, 300, 100); var dot1 = new Dot(77, 88); Originator originator = new Originator(); originator.AddGraphic(circle1); Assert.AreEqual("Circle(0,0,2)", originator.StateInfo); originator.Backup(); originator.AddGraphic(circle2); Assert.AreEqual("Circle(0,0,2) Circle(5,5,10)", originator.StateInfo); originator.Backup(); originator.AddGraphic(circle3); Assert.AreEqual("Circle(0,0,2) Circle(5,5,10) Circle(200,300,100)", originator.StateInfo); originator.Backup(); originator.AddGraphic(dot1); Assert.AreEqual("Circle(0,0,2) Circle(5,5,10) Circle(200,300,100) Dot(77,88)", originator.StateInfo); originator.Backup(); originator.RemoveAllCircles(); Assert.AreEqual("Dot(77,88)", originator.StateInfo); // Undoing originator.Undo(); Assert.AreEqual("Circle(0,0,2) Circle(5,5,10) Circle(200,300,100) Dot(77,88)", originator.StateInfo); originator.Undo(); originator.Undo(); originator.Undo(); Assert.AreEqual("Circle(0,0,2)", originator.StateInfo); }