public void OnThreadUnsafeObject_WhenChangesPerformedOnNestedAndUndoPerformedFormOtherThread_ExceptionIsThrown() { ThreadUnsafeTrackedObject root = new ThreadUnsafeTrackedObject(); root.Nested = new NestedTrackedObject(); var restorePoint = ObjectTracker.SetRestorePoint(root); root.Nested.S1 = "asd"; root.Nested.S2 = "dfg"; try { Task.Factory.StartNew(() => ObjectTracker.UndoTo(root, restorePoint)).Wait(); } catch (AggregateException aggrExc) { if (aggrExc.InnerExceptions.Count == 1) { throw aggrExc.InnerExceptions[0]; } else { throw; } } }
public void OnThreadUnsafeObject_WhenUndoPerformedFormTheSameThread_Success() { ThreadUnsafeTrackedObject root = new ThreadUnsafeTrackedObject(); var restorePoint = ObjectTracker.SetRestorePoint(root); root.S1 = "asd"; root.S2 = "dfg"; ObjectTracker.UndoTo(root, restorePoint); Assert.AreEqual(null, root.S1); Assert.AreEqual(null, root.S2); }
public void OnThreadUnsafeObject_WhenChangesPerformedOnNestedAndUndoPerformedFormTheSameThread_Success() { ThreadUnsafeTrackedObject root = new ThreadUnsafeTrackedObject(); root.Nested = new NestedTrackedObject(); var restorePoint = ObjectTracker.SetRestorePoint(root); root.Nested.S1 = "asd"; root.Nested.S2 = "dfg"; ObjectTracker.UndoTo( root, restorePoint ); Assert.AreEqual(null, root.Nested.S1); Assert.AreEqual(null, root.Nested.S1); }
public void OnThreadUnsafeObject_WhenChangesPerformedOnNestedAndUndoPerformedFormOtherThread_ExceptionIsThrown() { ThreadUnsafeTrackedObject root = new ThreadUnsafeTrackedObject(); root.Nested = new NestedTrackedObject(); var restorePoint = ObjectTracker.SetRestorePoint(root); root.Nested.S1 = "asd"; root.Nested.S2 = "dfg"; try { Task.Factory.StartNew(() => ObjectTracker.UndoTo(root, restorePoint)).Wait(); } catch (AggregateException aggrExc) { if (aggrExc.InnerExceptions.Count == 1) throw aggrExc.InnerExceptions[0]; else throw; } }