function testLoopRun() { $loop = new Loop(); $loop->add(new CallbackWatcher(function () { })); $loop->run(2); $this->assertSame($loop->getTicks(), 2); $c = 0; $loop->filter(function () { return false; }); $loop->setMinDuration(100); $loop->add(new CallbackWatcher(function ($w) use(&$c) { usleep(101); $w->getLoop()->stop(); $c++; })); $this->assertSame(0, $c); $loop->run(); $this->assertSame(1, $c); $a = 0; $b = 0; $loop->reset(); $loop->setMinDuration(100); $loop->add(new CallbackWatcher(function ($w) use(&$a) { if ($w->getLoop()->getTicks() === 3) { $w->stop(); } else { $a++; } })); $loop->add(new CallbackWatcher(function ($w) use(&$b) { if ($w->getLoop()->getTicks() === 5) { $w->finished(); } else { $b++; } })); $loop->run(); $this->assertSame(3, $a); $this->assertSame(5, $b); }