NinjaMutex\Tests\Lock\LockTest::testIfLockDestructorThrowsWhenBackendIsUnavailable PHP Метод

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

public testIfLockDestructorThrowsWhenBackendIsUnavailable ( NinjaMutex\Lock\LockInterface $lockImplementor, NinjaMutex\Tests\Mock\PermanentServiceInterface $backend )
$lockImplementor NinjaMutex\Lock\LockInterface
$backend NinjaMutex\Tests\Mock\PermanentServiceInterface
    public function testIfLockDestructorThrowsWhenBackendIsUnavailable(LockInterface $lockImplementor, PermanentServiceInterface $backend)
    {
        $name = "forfiter";
        $this->assertFalse($lockImplementor->isLocked($name));
        $this->assertTrue($lockImplementor->acquireLock($name, 0));
        $this->assertTrue($lockImplementor->isLocked($name));
        // make backend unavailable
        $backend->setAvailable(false);
        try {
            // explicit __destructor() call, should throw UnrecoverableMutexException
            $lockImplementor->__destruct();
        } catch (UnrecoverableMutexException $e) {
            // make backend available again
            $backend->setAvailable(true);
            // release lock
            $this->assertTrue($lockImplementor->releaseLock($name));
            $this->assertFalse($lockImplementor->releaseLock($name));
            $this->assertFalse($lockImplementor->isLocked($name));
            return;
        }
        $this->fail('An expected exception has not been raised.');
    }