streams/tests/CallbackWrapperTest.php
2018-01-30 15:09:12 +01:00

86 lines
2 KiB
PHP

<?php
/**
* Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Licensed under the MIT license:
* http://opensource.org/licenses/MIT
*/
namespace Icewind\Streams\Tests;
class CallbackWrapperTest extends WrapperTest {
/**
* @param resource $source
* @param callable $read
* @param callable $write
* @param callable $close
* @param callable $readDir
* @return resource
*/
protected function wrapSource($source, $read = null, $write = null, $close = null, $readDir = null) {
return \Icewind\Streams\CallbackWrapper::wrap($source, $read, $write, $close, $readDir);
}
/**
* @expectedException \BadMethodCallException
*/
public function testWrapInvalidSource() {
$this->wrapSource('foo');
}
public function testReadCallback() {
$called = false;
$callBack = function () use (&$called) {
$called = true;
};
$source = fopen('php://temp', 'r+');
fwrite($source, 'foobar');
rewind($source);
$wrapped = $this->wrapSource($source, $callBack);
$this->assertEquals('foo', fread($wrapped, 3));
$this->assertTrue($called);
}
public function testWriteCallback() {
$lastData = '';
$callBack = function ($data) use (&$lastData) {
$lastData = $data;
};
$source = fopen('php://temp', 'r+');
$wrapped = $this->wrapSource($source, null, $callBack);
fwrite($wrapped, 'foobar');
$this->assertEquals('foobar', $lastData);
}
public function testCloseCallback() {
$called = false;
$callBack = function () use (&$called) {
$called = true;
};
$source = fopen('php://temp', 'r+');
fwrite($source, 'foobar');
rewind($source);
$wrapped = $this->wrapSource($source, null, null, $callBack);
fclose($wrapped);
$this->assertTrue($called);
}
public function testReadDirCallback() {
$called = false;
$callBack = function () use (&$called) {
$called = true;
};
$source = opendir(sys_get_temp_dir());
$wrapped = $this->wrapSource($source, null, null, null, $callBack);
readdir($wrapped);
$this->assertTrue($called);
}
}