public void LargeOperationTest() { AggregateTrackedObject root = new AggregateTrackedObject(); root.DependentTrackedObject = new SimpleTrackedObject(); var to = (ITrackedObject)root; using (ObjectTracker.StartAtomicOperation(to, "name")) { root.ChangeValuesWithDependent(1, 2, 3); root.ChangeValues(3, 4, 5); root.DependentTrackedObject.ChangeValues(6, 7, 8); } to.Tracker.Undo(); Assert.AreEqual(0, root.P1); Assert.AreEqual(0, root.P2); Assert.AreEqual(0, root.P3); Assert.AreEqual(0, root.DependentTrackedObject.P1); Assert.AreEqual(0, root.DependentTrackedObject.P2); Assert.AreEqual(0, root.DependentTrackedObject.P3); }
public void NamedChunkTest() { SimpleTrackedObject to = new SimpleTrackedObject(); var sot = (ITrackedObject)to; using (ObjectTracker.StartAtomicOperation(sot, "name")) { to.ChangeValues(4, 5, 6); to.ChangeValues(7, 8, 9); to.ChangeValues(10, 11, 12); } sot.Tracker.Undo(); Assert.AreEqual(0, to.P1); Assert.AreEqual(0, to.P2); Assert.AreEqual(0, to.P3); sot.Tracker.Redo(); Assert.AreEqual(10, to.P1); Assert.AreEqual(11, to.P2); Assert.AreEqual(12, to.P3); to.ChangeValues(1, 2, 3); sot.Tracker.Undo(); Assert.AreEqual(10, to.P1); Assert.AreEqual(11, to.P2); Assert.AreEqual(12, to.P3); sot.Tracker.Redo(); Assert.AreEqual(1, to.P1); Assert.AreEqual(2, to.P2); Assert.AreEqual(3, to.P3); }