Example #1
0
        public void LockAsync_Can_Lock_Successfully()
        {
            const string fileId    = "testfile1";
            var          fileLock1 = new InMemoryFileLock(fileId);

            fileLock1.Lock().ShouldBeTrue();

            var fileLock2 = new InMemoryFileLock(fileId);

            fileLock2.Lock().ShouldBeFalse();

            fileLock1.Lock().ShouldBeTrue();

            fileLock1.ReleaseIfHeld();

            fileLock2.Lock().ShouldBeTrue();
        }
Example #2
0
        public async Task ReleaseIfHeld_Relases_Lock_Successfully()
        {
            const string fileId    = "testfile2";
            var          fileLock1 = new InMemoryFileLock(fileId);

            (await fileLock1.Lock()).ShouldBeTrue();

            var fileLock2 = new InMemoryFileLock(fileId);

            (await fileLock2.Lock()).ShouldBeFalse();

            (await fileLock1.Lock()).ShouldBeTrue();

            await fileLock1.ReleaseIfHeld();

            (await fileLock2.Lock()).ShouldBeTrue();
        }
Example #3
0
        public void ReleaseIfHeld_Does_Nothing_If_Lock_Was_Not_Held()
        {
            const string fileId    = "testfile3";
            var          fileLock1 = new InMemoryFileLock(fileId);

            fileLock1.Lock().ShouldBeTrue();

            var fileLock2 = new InMemoryFileLock(fileId);

            fileLock2.Lock().ShouldBeFalse();

            fileLock2.ReleaseIfHeld();

            var fileLock3 = new InMemoryFileLock(fileId);

            fileLock3.ReleaseIfHeld();
            fileLock3.Lock().ShouldBeFalse();
        }