1
0
mirror of https://github.com/danog/amp.git synced 2024-12-11 08:59:46 +01:00
amp/test/LoopTest.php

82 lines
2.0 KiB
PHP
Raw Normal View History

<?php
namespace Amp\Test;
use Amp\Loop;
class LoopTest extends BaseTest
2018-06-18 20:00:01 +02:00
{
public function testDelayWithNegativeDelay()
{
$this->expectException(\Error::class);
2018-06-18 20:00:01 +02:00
Loop::delay(-1, function () {
});
}
2018-06-18 20:00:01 +02:00
public function testRepeatWithNegativeInterval()
{
$this->expectException(\Error::class);
2018-06-18 20:00:01 +02:00
Loop::repeat(-1, function () {
});
}
2017-03-15 08:40:58 +01:00
2018-06-18 20:00:01 +02:00
public function testOnReadable()
{
2017-03-15 08:40:58 +01:00
Loop::run(function () {
2019-09-21 23:17:45 +02:00
$ends = \stream_socket_pair(
\stripos(PHP_OS, "win") === 0 ? STREAM_PF_INET : STREAM_PF_UNIX,
STREAM_SOCK_STREAM,
STREAM_IPPROTO_IP
);
\fwrite($ends[0], "trigger readability watcher");
2017-03-15 08:40:58 +01:00
Loop::onReadable($ends[1], function ($watcher) {
2017-03-15 08:40:58 +01:00
$this->assertTrue(true);
Loop::cancel($watcher);
2017-03-15 08:40:58 +01:00
Loop::stop();
});
});
}
2018-06-18 20:00:01 +02:00
public function testOnWritable()
{
2017-03-15 08:40:58 +01:00
Loop::run(function () {
Loop::onWritable(STDOUT, function ($watcher) {
2017-03-15 08:40:58 +01:00
$this->assertTrue(true);
Loop::cancel($watcher);
2017-03-15 08:40:58 +01:00
Loop::stop();
});
});
}
2018-01-06 03:32:57 +01:00
public function testNow()
{
Loop::run(function () {
$now = Loop::now();
Loop::delay(100, function () use ($now) {
$now += 100;
$new = Loop::now();
// Allow a few milliseconds of inaccuracy.
$this->assertGreaterThanOrEqual($now - 1, $new);
2019-09-21 23:17:45 +02:00
$this->assertLessThanOrEqual($now + 100, $new);
2018-01-06 03:32:57 +01:00
// Same time should be returned from later call.
$this->assertSame($new, Loop::now());
});
});
}
2018-06-18 20:00:01 +02:00
public function testGet()
{
2017-03-15 08:40:58 +01:00
$this->assertInstanceOf(Loop\Driver::class, Loop::get());
}
2018-01-06 03:32:57 +01:00
public function testGetInfo()
2018-06-18 20:00:01 +02:00
{
2017-03-15 08:40:58 +01:00
$this->assertSame(Loop::get()->getInfo(), Loop::getInfo());
}
}