public void OnReaderWriterSynchronizedObject_WhenUndoPerformed_LocksAreRespected() { var testObject = new ReaderWriterSynchronizedTrackedObject(); testObject.S1 = "123"; var restorePoint = ObjectTracker.SetRestorePoint( testObject ); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Task writerLockAcquiredTask = Task.Factory.StartNew( () => testObject.S1 = "sad" ); ObjectTracker.UndoTo( testObject, restorePoint ); stopwatch.Stop(); writerLockAcquiredTask.Wait(); Assert.IsTrue( stopwatch.ElapsedMilliseconds >= 200 ); }
[Ignore] // TODO resolve interaction between ReaderWriterSynchronized and TrackedObject public void OnReaderWriterSynchronizedObject_WhenUndoPerformed_LocksAreRespected() { var testObject = new ReaderWriterSynchronizedTrackedObject(); testObject.S1 = "123"; var restorePoint = ObjectTracker.SetRestorePoint(testObject); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Task writerLockAcquiredTask = Task.Factory.StartNew(() => testObject.S1 = "sad"); ObjectTracker.UndoTo(testObject, restorePoint); stopwatch.Stop(); writerLockAcquiredTask.Wait(); Assert.IsTrue(stopwatch.ElapsedMilliseconds >= 200); }