NinjaMutex\Tests\MutexTest::testIfMutexDestructorThrowsWhenBackendIsUnavailable PHP Метод

testIfMutexDestructorThrowsWhenBackendIsUnavailable() публичный Метод

    public function testIfMutexDestructorThrowsWhenBackendIsUnavailable()
    {
        $lockImplementor = new MockLock();
        $mutex = new Mutex('forfiter', $lockImplementor);
        $this->assertFalse($mutex->isAcquired());
        $this->assertTrue($mutex->acquireLock());
        $this->assertTrue($mutex->isAcquired());
        $this->assertTrue($mutex->acquireLock());
        $this->assertTrue($mutex->isAcquired());
        // make backend unavailable
        $lockImplementor->setAvailable(false);
        try {
            // explicit __destructor() call, should throw UnrecoverableMutexException
            $mutex->__destruct();
        } catch (UnrecoverableMutexException $e) {
            // make backend available again
            $lockImplementor->setAvailable(true);
            // release lock
            $this->assertTrue($mutex->releaseLock());
            $this->assertFalse($mutex->releaseLock());
            return;
        }
        $this->fail('An expected exception has not been raised.');
    }