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);
}