public void MakeSureYouCanGetAWriteLockWithAnotherWriteLockInPlaceIfYouReleaseThatOtherLockFirst() { var fileLock = new FileLockable(FakeNodesFactory.CreateFakeFileNode(), FakeNodesFactory.CreateFakeFolderNodes(1)); Guid lockId = fileLock.LockForWriting(); fileLock.ReleaseLock(lockId); fileLock.LockForWriting(); }
public void MakeSureYouCannotGetAWriteLockWithAnotherWriteLockInPlace() { var fileLock = new FileLockable(FakeNodesFactory.CreateFakeFileNode(), FakeNodesFactory.CreateFakeFolderNodes(1)); fileLock.LockForWriting(); ExceptionAssert.MakeSureExceptionIsRaisedBy <CannotAcquireLockException>( delegate { fileLock.LockForWriting(); }); }
public void MakeSureYouCanGetAWriteLockAfterReadLocksAreReleased() { var fileLock = new FileLockable(FakeNodesFactory.CreateFakeFileNode(), FakeNodesFactory.CreateFakeFolderNodes(1)); Guid lockId = fileLock.LockForReading(); Guid lock2Id = fileLock.LockForReading(); fileLock.ReleaseLock(lockId); fileLock.ReleaseLock(lock2Id); fileLock.LockForWriting(); }
public void MakeSureNodeLockableThrowsWhenBeingAcquiredIfFileLockDoesNotListItAsAssociatedNode() { FolderNode nodeToLock = FakeNodesFactory.CreateFakeFolderNodes(1).First(); var nodeLockable = new FolderNodeLockable(nodeToLock); FileLockable lock1 = new FileLockable(FakeNodesFactory.CreateFakeFileNode(), FakeNodesFactory.CreateFakeFolderNodes(2)); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>( delegate { nodeLockable.AddLock(lock1, lock1.LockForWriting()); }); }
public void MakeSureYouCannotReleaseALockWhichIsNotHeld() { FolderNode nodeToLock = FakeNodesFactory.CreateFakeFolderNodes(1).First(); var nodeLockable = new FolderNodeLockable(nodeToLock); List <FolderNode> nodes = new List <FolderNode> { nodeToLock }; FileLockable lock1 = new FileLockable(FakeNodesFactory.CreateFakeFileNode(), nodes); FileLockable lock2 = new FileLockable(FakeNodesFactory.CreateFakeFileNode(), nodes); Guid lockId = lock1.LockForReading(); nodeLockable.AddLock(lock1, lockId); ExceptionAssert.MakeSureExceptionIsRaisedBy <LockNotFoundException>( delegate { nodeLockable.ReleaseLock(lock2.LockForWriting()); }); }