2016-12-30 03:59:59 +01:00
|
|
|
<?php
|
2015-08-13 01:02:41 +02:00
|
|
|
|
|
|
|
namespace Amp\File\Test;
|
|
|
|
|
|
|
|
use Amp\File as file;
|
|
|
|
|
|
|
|
class EioHandleTest extends HandleTest {
|
2017-06-17 01:12:42 +02:00
|
|
|
protected function execute(callable $cb) {
|
2015-08-13 01:02:41 +02:00
|
|
|
if (\extension_loaded("eio")) {
|
2017-03-17 04:39:49 +01:00
|
|
|
\Amp\Loop::run(function() use ($cb) {
|
2016-07-21 01:33:03 +02:00
|
|
|
\Amp\File\filesystem(new \Amp\File\EioDriver);
|
2017-03-17 04:39:49 +01:00
|
|
|
\Amp\Promise\rethrow(new \Amp\Coroutine($cb()));
|
2016-07-21 01:33:03 +02:00
|
|
|
});
|
2015-08-13 01:02:41 +02:00
|
|
|
} else {
|
|
|
|
$this->markTestSkipped(
|
|
|
|
"eio extension not loaded"
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testQueuedWritesOverrideEachOtherIfNotWaitedUpon() {
|
2017-06-17 01:12:42 +02:00
|
|
|
$this->execute(function () {
|
2015-08-13 01:02:41 +02:00
|
|
|
$path = Fixture::path() . "/write";
|
|
|
|
$handle = (yield file\open($path, "c+"));
|
|
|
|
$this->assertSame(0, $handle->tell());
|
|
|
|
|
|
|
|
$write1 = $handle->write("foo");
|
|
|
|
$write2 = $handle->write("bar");
|
|
|
|
|
2017-03-17 04:39:49 +01:00
|
|
|
yield \Amp\Promise\all([$write1, $write2]);
|
2015-08-13 01:02:41 +02:00
|
|
|
|
|
|
|
$handle->seek(0);
|
|
|
|
$contents = (yield $handle->read(8192));
|
|
|
|
$this->assertSame(3, $handle->tell());
|
|
|
|
$this->assertTrue($handle->eof());
|
|
|
|
$this->assertSame("bar", $contents);
|
|
|
|
|
|
|
|
yield $handle->close();
|
|
|
|
yield file\unlink($path);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|