malkusch\lock\util\DoubleCheckedLockingTest::testLockedCheckAndExecution PHP Метод

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

Tests that the check and execution are in the same lock.
    public function testLockedCheckAndExecution()
    {
        $lock = 0;
        $check = 0;
        $this->mutex->expects($this->once())->method("synchronized")->willReturnCallback(function (callable $block) use(&$lock) {
            $lock++;
            call_user_func($block);
            $lock++;
        });
        $this->checkedLocking->setCheck(function () use(&$lock, &$check) {
            if ($check == 1) {
                $this->assertEquals(1, $lock);
            }
            $check++;
            return true;
        });
        $this->checkedLocking->then(function () use(&$lock) {
            $this->assertEquals(1, $lock);
        });
        $this->assertEquals(2, $check);
    }