|
14 | 14 | use danog\Loop\Test\Interfaces\LoggingPauseInterface; |
15 | 15 | use danog\Loop\Test\Traits\Basic; |
16 | 16 | use danog\Loop\Test\Traits\LoggingPause; |
| 17 | +use Revolt\EventLoop; |
17 | 18 |
|
18 | 19 | use function Amp\delay; |
19 | 20 |
|
@@ -275,6 +276,69 @@ private function fixtureAssertions(callable $closure, int &$runCount, ?float &$p |
275 | 276 | $this->assertFalse($loop->isRunning()); |
276 | 277 | $this->assertFalse($loop->stop()); |
277 | 278 | $this->assertFalse($loop->resume()); |
| 279 | + |
| 280 | + // Restart loop, without postponing resuming |
| 281 | + $pauseTime = GenericLoop::PAUSE; |
| 282 | + $this->assertTrue($loop->start()); |
| 283 | + self::waitTick(); |
| 284 | + $this->fixtureStarted($loop, 5); |
| 285 | + $expectedRunCount++; |
| 286 | + |
| 287 | + $this->assertEquals($expectedRunCount, $runCount); |
| 288 | + $this->assertEquals(6, $loop->getPauseCount()); |
| 289 | + $this->assertEquals(0.0, $loop->getLastPause()); |
| 290 | + $this->assertTrue($loop->isPaused()); |
| 291 | + |
| 292 | + $pauseTime = GenericLoop::STOP; |
| 293 | + $this->assertTrue($loop->resume(false)); |
| 294 | + $this->assertTrue($loop->resume(false)); |
| 295 | + $expectedRunCount++; |
| 296 | + self::waitTick(); |
| 297 | + $this->assertEquals($expectedRunCount, $runCount); |
| 298 | + $this->assertEquals(6, $loop->getPauseCount()); |
| 299 | + $this->assertEquals(0.0, $loop->getLastPause()); |
| 300 | + $this->assertTrue($loop->isPaused()); |
| 301 | + |
| 302 | + $this->assertEquals(5, $loop->startCounter()); |
| 303 | + $this->assertEquals(5, $loop->endCounter()); |
| 304 | + |
| 305 | + $this->assertFalse($loop->isRunning()); |
| 306 | + $this->assertFalse($loop->stop()); |
| 307 | + $this->assertFalse($loop->resume()); |
| 308 | + |
| 309 | + // Restart loop, postponing resuming |
| 310 | + $pauseTime = GenericLoop::PAUSE; |
| 311 | + $this->assertTrue($loop->start()); |
| 312 | + self::waitTick(); |
| 313 | + $this->fixtureStarted($loop, 6); |
| 314 | + $expectedRunCount++; |
| 315 | + |
| 316 | + $this->assertEquals($expectedRunCount, $runCount); |
| 317 | + $this->assertEquals(7, $loop->getPauseCount()); |
| 318 | + $this->assertEquals(0.0, $loop->getLastPause()); |
| 319 | + $this->assertTrue($loop->isPaused()); |
| 320 | + |
| 321 | + $pauseTime = GenericLoop::STOP; |
| 322 | + $this->assertTrue($loop->resume(true)); |
| 323 | + EventLoop::queue(fn () => $this->assertTrue($loop->resume(true))); |
| 324 | + self::waitTick(); |
| 325 | + $this->assertEquals($expectedRunCount, $runCount); |
| 326 | + $this->assertEquals(7, $loop->getPauseCount()); |
| 327 | + $this->assertEquals(0.0, $loop->getLastPause()); |
| 328 | + $this->assertTrue($loop->isPaused()); |
| 329 | + |
| 330 | + $this->assertEquals(6, $loop->startCounter()); |
| 331 | + $this->assertEquals(5, $loop->endCounter()); |
| 332 | + |
| 333 | + self::waitTick(); |
| 334 | + $expectedRunCount++; |
| 335 | + $this->assertEquals($expectedRunCount, $runCount); |
| 336 | + $this->assertEquals(7, $loop->getPauseCount()); |
| 337 | + $this->assertEquals(0.0, $loop->getLastPause()); |
| 338 | + $this->assertTrue($loop->isPaused()); |
| 339 | + |
| 340 | + $this->assertEquals(6, $loop->startCounter()); |
| 341 | + $this->assertEquals(6, $loop->endCounter()); |
278 | 342 | } |
279 | 343 |
|
280 | 344 | /** |
|
0 commit comments