first commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
use Grav\Framework\File\Formatter\CsvFormatter;
|
||||
|
||||
/**
|
||||
* Class CsvFormatterTest
|
||||
*/
|
||||
class CsvFormatterTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testEncodeWithAssocColumns(): void
|
||||
{
|
||||
$data = [
|
||||
['col1' => 1, 'col2' => 2, 'col3' => 3],
|
||||
['col1' => 'aaa', 'col2' => 'bbb', 'col3' => 'ccc'],
|
||||
];
|
||||
|
||||
$encoded = (new CsvFormatter())->encode($data);
|
||||
|
||||
$lines = array_filter(explode(PHP_EOL, $encoded));
|
||||
|
||||
self::assertCount(3, $lines);
|
||||
self::assertEquals('col1,col2,col3', $lines[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* TBD - If indexes are all numeric, what's the purpose
|
||||
* of displaying header
|
||||
*/
|
||||
public function testEncodeWithIndexColumns(): void
|
||||
{
|
||||
$data = [
|
||||
[0 => 1, 1 => 2, 2 => 3],
|
||||
];
|
||||
|
||||
$encoded = (new CsvFormatter())->encode($data);
|
||||
|
||||
$lines = array_filter(explode(PHP_EOL, $encoded));
|
||||
|
||||
self::assertCount(2, $lines);
|
||||
self::assertEquals('0,1,2', $lines[0]);
|
||||
}
|
||||
|
||||
public function testEncodeEmptyData(): void
|
||||
{
|
||||
$encoded = (new CsvFormatter())->encode([]);
|
||||
self::assertEquals('', $encoded);
|
||||
}
|
||||
}
|
338
tests/unit/Grav/Framework/Filesystem/FilesystemTest.php
Normal file
338
tests/unit/Grav/Framework/Filesystem/FilesystemTest.php
Normal file
@@ -0,0 +1,338 @@
|
||||
<?php
|
||||
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
|
||||
/**
|
||||
* Class FilesystemTest
|
||||
*/
|
||||
class FilesystemTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
protected $class;
|
||||
|
||||
protected $tests = [
|
||||
'' => [
|
||||
'parent' => '',
|
||||
'normalize' => '',
|
||||
'dirname' => '',
|
||||
'pathinfo' => [
|
||||
'basename' => '',
|
||||
'filename' => '',
|
||||
]
|
||||
],
|
||||
'.' => [
|
||||
'parent' => '',
|
||||
'normalize' => '',
|
||||
'dirname' => '.',
|
||||
'pathinfo' => [
|
||||
'dirname' => '.',
|
||||
'basename' => '.',
|
||||
'extension' => '',
|
||||
'filename' => '',
|
||||
]
|
||||
],
|
||||
'./' => [
|
||||
'parent' => '',
|
||||
'normalize' => '',
|
||||
'dirname' => '.',
|
||||
'pathinfo' => [
|
||||
'dirname' => '.',
|
||||
'basename' => '.',
|
||||
'extension' => '',
|
||||
'filename' => '',
|
||||
]
|
||||
],
|
||||
'././.' => [
|
||||
'parent' => '',
|
||||
'normalize' => '',
|
||||
'dirname' => './.',
|
||||
'pathinfo' => [
|
||||
'dirname' => './.',
|
||||
'basename' => '.',
|
||||
'extension' => '',
|
||||
'filename' => '',
|
||||
]
|
||||
],
|
||||
'.file' => [
|
||||
'parent' => '.',
|
||||
'normalize' => '.file',
|
||||
'dirname' => '.',
|
||||
'pathinfo' => [
|
||||
'dirname' => '.',
|
||||
'basename' => '.file',
|
||||
'extension' => 'file',
|
||||
'filename' => '',
|
||||
]
|
||||
],
|
||||
'/' => [
|
||||
'parent' => '',
|
||||
'normalize' => '/',
|
||||
'dirname' => '/',
|
||||
'pathinfo' => [
|
||||
'dirname' => '/',
|
||||
'basename' => '',
|
||||
'filename' => '',
|
||||
]
|
||||
],
|
||||
'/absolute' => [
|
||||
'parent' => '/',
|
||||
'normalize' => '/absolute',
|
||||
'dirname' => '/',
|
||||
'pathinfo' => [
|
||||
'dirname' => '/',
|
||||
'basename' => 'absolute',
|
||||
'filename' => 'absolute',
|
||||
]
|
||||
],
|
||||
'/absolute/' => [
|
||||
'parent' => '/',
|
||||
'normalize' => '/absolute',
|
||||
'dirname' => '/',
|
||||
'pathinfo' => [
|
||||
'dirname' => '/',
|
||||
'basename' => 'absolute',
|
||||
'filename' => 'absolute',
|
||||
]
|
||||
],
|
||||
'/very/long/absolute/path' => [
|
||||
'parent' => '/very/long/absolute',
|
||||
'normalize' => '/very/long/absolute/path',
|
||||
'dirname' => '/very/long/absolute',
|
||||
'pathinfo' => [
|
||||
'dirname' => '/very/long/absolute',
|
||||
'basename' => 'path',
|
||||
'filename' => 'path',
|
||||
]
|
||||
],
|
||||
'/very/long/absolute/../path' => [
|
||||
'parent' => '/very/long',
|
||||
'normalize' => '/very/long/path',
|
||||
'dirname' => '/very/long/absolute/..',
|
||||
'pathinfo' => [
|
||||
'dirname' => '/very/long/absolute/..',
|
||||
'basename' => 'path',
|
||||
'filename' => 'path',
|
||||
]
|
||||
],
|
||||
'relative' => [
|
||||
'parent' => '.',
|
||||
'normalize' => 'relative',
|
||||
'dirname' => '.',
|
||||
'pathinfo' => [
|
||||
'dirname' => '.',
|
||||
'basename' => 'relative',
|
||||
'filename' => 'relative',
|
||||
]
|
||||
],
|
||||
'very/long/relative/path' => [
|
||||
'parent' => 'very/long/relative',
|
||||
'normalize' => 'very/long/relative/path',
|
||||
'dirname' => 'very/long/relative',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'very/long/relative',
|
||||
'basename' => 'path',
|
||||
'filename' => 'path',
|
||||
]
|
||||
],
|
||||
'path/to/file.jpg' => [
|
||||
'parent' => 'path/to',
|
||||
'normalize' => 'path/to/file.jpg',
|
||||
'dirname' => 'path/to',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'path/to',
|
||||
'basename' => 'file.jpg',
|
||||
'extension' => 'jpg',
|
||||
'filename' => 'file',
|
||||
]
|
||||
],
|
||||
'user://' => [
|
||||
'parent' => '',
|
||||
'normalize' => 'user://',
|
||||
'dirname' => 'user://',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://',
|
||||
'basename' => '',
|
||||
'filename' => '',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://.' => [
|
||||
'parent' => '',
|
||||
'normalize' => 'user://',
|
||||
'dirname' => 'user://',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://',
|
||||
'basename' => '',
|
||||
'filename' => '',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://././.' => [
|
||||
'parent' => '',
|
||||
'normalize' => 'user://',
|
||||
'dirname' => 'user://',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://',
|
||||
'basename' => '',
|
||||
'filename' => '',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://./././file' => [
|
||||
'parent' => 'user://',
|
||||
'normalize' => 'user://file',
|
||||
'dirname' => 'user://',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://',
|
||||
'basename' => 'file',
|
||||
'filename' => 'file',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://./././folder/file' => [
|
||||
'parent' => 'user://folder',
|
||||
'normalize' => 'user://folder/file',
|
||||
'dirname' => 'user://folder',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://folder',
|
||||
'basename' => 'file',
|
||||
'filename' => 'file',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://.file' => [
|
||||
'parent' => 'user://',
|
||||
'normalize' => 'user://.file',
|
||||
'dirname' => 'user://',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://',
|
||||
'basename' => '.file',
|
||||
'extension' => 'file',
|
||||
'filename' => '',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user:///' => [
|
||||
'parent' => '',
|
||||
'normalize' => 'user:///',
|
||||
'dirname' => 'user:///',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user:///',
|
||||
'basename' => '',
|
||||
'filename' => '',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user:///absolute' => [
|
||||
'parent' => 'user:///',
|
||||
'normalize' => 'user:///absolute',
|
||||
'dirname' => 'user:///',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user:///',
|
||||
'basename' => 'absolute',
|
||||
'filename' => 'absolute',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user:///very/long/absolute/path' => [
|
||||
'parent' => 'user:///very/long/absolute',
|
||||
'normalize' => 'user:///very/long/absolute/path',
|
||||
'dirname' => 'user:///very/long/absolute',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user:///very/long/absolute',
|
||||
'basename' => 'path',
|
||||
'filename' => 'path',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://relative' => [
|
||||
'parent' => 'user://',
|
||||
'normalize' => 'user://relative',
|
||||
'dirname' => 'user://',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://',
|
||||
'basename' => 'relative',
|
||||
'filename' => 'relative',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://very/long/relative/path' => [
|
||||
'parent' => 'user://very/long/relative',
|
||||
'normalize' => 'user://very/long/relative/path',
|
||||
'dirname' => 'user://very/long/relative',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://very/long/relative',
|
||||
'basename' => 'path',
|
||||
'filename' => 'path',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
'user://path/to/file.jpg' => [
|
||||
'parent' => 'user://path/to',
|
||||
'normalize' => 'user://path/to/file.jpg',
|
||||
'dirname' => 'user://path/to',
|
||||
'pathinfo' => [
|
||||
'dirname' => 'user://path/to',
|
||||
'basename' => 'file.jpg',
|
||||
'extension' => 'jpg',
|
||||
'filename' => 'file',
|
||||
'scheme' => 'user',
|
||||
]
|
||||
],
|
||||
];
|
||||
|
||||
protected function _before(): void
|
||||
{
|
||||
$this->class = Filesystem::getInstance();
|
||||
}
|
||||
|
||||
protected function _after(): void
|
||||
{
|
||||
unset($this->class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $tests
|
||||
* @param string $method
|
||||
*/
|
||||
protected function runTestSet(array $tests, $method): void
|
||||
{
|
||||
$class = $this->class;
|
||||
foreach ($tests as $path => $candidates) {
|
||||
if (!array_key_exists($method, $candidates)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$expected = $candidates[$method];
|
||||
|
||||
$result = $class->{$method}($path);
|
||||
|
||||
self::assertSame($expected, $result, "Test {$method}('{$path}')");
|
||||
|
||||
if (function_exists($method) && !strpos($path, '://')) {
|
||||
$cmp_result = $method($path);
|
||||
|
||||
self::assertSame($cmp_result, $result, "Compare to original {$method}('{$path}')");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testParent(): void
|
||||
{
|
||||
$this->runTestSet($this->tests, 'parent');
|
||||
}
|
||||
|
||||
public function testNormalize(): void
|
||||
{
|
||||
$this->runTestSet($this->tests, 'normalize');
|
||||
}
|
||||
|
||||
public function testDirname(): void
|
||||
{
|
||||
$this->runTestSet($this->tests, 'dirname');
|
||||
}
|
||||
|
||||
public function testPathinfo(): void
|
||||
{
|
||||
$this->runTestSet($this->tests, 'pathinfo');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user