nextcloud/apps/files_external/3rdparty/icewind/streams/tests/IteratorDirectory.php

131 lines
2.5 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 IteratorDirectory extends \PHPUnit_Framework_TestCase {
/**
* @param \Iterator | array $source
* @return resource
*/
protected function wrapSource($source) {
return \Icewind\Streams\IteratorDirectory::wrap($source);
}
/**
* @expectedException \BadMethodCallException
*/
public function testNoContext() {
$context = stream_context_create(array());
stream_wrapper_register('iterator', '\Icewind\Streams\IteratorDirectory');
try {
opendir('iterator://', $context);
stream_wrapper_unregister('iterator');
} catch (\Exception $e) {
stream_wrapper_unregister('iterator');
throw $e;
}
}
/**
* @expectedException \BadMethodCallException
*/
public function testInvalidSource() {
$context = stream_context_create(array(
'dir' => array(
'array' => 2
)
));
stream_wrapper_register('iterator', '\Icewind\Streams\IteratorDirectory');
try {
opendir('iterator://', $context);
stream_wrapper_unregister('iterator');
} catch (\Exception $e) {
stream_wrapper_unregister('iterator');
throw $e;
}
}
/**
* @expectedException \BadMethodCallException
*/
public function testWrapInvalidSource() {
$this->wrapSource(2);
}
public function fileListProvider() {
$longList = array_fill(0, 500, 'foo');
return array(
array(
array(
'foo',
'bar',
'qwerty'
)
),
array(
array(
'with spaces',
'under_scores',
'日本語',
'character %$_',
'.',
'0',
'double "quotes"',
"single 'quotes'"
)
),
array(
array(
'single item'
)
),
array(
$longList
),
array(
array()
)
);
}
protected function basicTest($fileList, $dh) {
$result = array();
while (($file = readdir($dh)) !== false) {
$result[] = $file;
}
$this->assertEquals($fileList, $result);
rewinddir($dh);
if (count($fileList)) {
$this->assertEquals($fileList[0], readdir($dh));
} else {
$this->assertFalse(readdir($dh));
}
}
/**
* @dataProvider fileListProvider
*/
public function testBasicIterator($fileList) {
$iterator = new \ArrayIterator($fileList);
$dh = $this->wrapSource($iterator);
$this->basicTest($fileList, $dh);
}
/**
* @dataProvider fileListProvider
*/
public function testBasicArray($fileList) {
$dh = $this->wrapSource($fileList);
$this->basicTest($fileList, $dh);
}
}