<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
<?php
/**
 * This file is part of vfsStream.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @package  org\bovigo\vfs
 */
namespace org\bovigo\vfs;
/**
 * Test for directory iteration.
 *
 * @group  issue_104
 * @group  issue_128
 * @since  1.6.2
 */
class FilenameTestCase extends \BC_PHPUnit_Framework_TestCase
{
    private $rootDir;
    private $lostAndFound;

    /**
     * set up test environment
     */
    public function setUp(): void
    {
        vfsStream::setup('root');
        $this->rootDir = vfsStream::url('root');
        $this->lostAndFound = $this->rootDir . '/lost+found/';
        mkdir($this->lostAndFound);
    }

    /**
     * @test
     */
    public function worksWithCorrectName()
    {
        $results = array();
        $it = new \RecursiveDirectoryIterator($this->lostAndFound);
        foreach ($it as $f) {
            $results[] = $f->getPathname();
        }

        $this->assertEquals(
                array(
                        'vfs://root/lost+found' . DIRECTORY_SEPARATOR . '.',
                        'vfs://root/lost+found' . DIRECTORY_SEPARATOR . '..'
                ),
                $results
        );
    }

    /**
     * @test
     */
    public function doesNotWorkWithInvalidName()
    {
        $this->expectException(\UnexpectedValueException::class);
        $this->expectExceptionMessage('ailed to open dir');
        $results = array();
        $it = new \RecursiveDirectoryIterator($this->rootDir . '/lost found/');
        foreach ($it as $f) {
            $results[] = $f->getPathname();
        }
    }

    /**
     * @test
     */
    public function returnsCorrectNames()
    {
        $results = array();
        $it = new \RecursiveDirectoryIterator($this->rootDir);
        foreach ($it as $f) {
            $results[] = $f->getPathname();
        }

        $this->assertEquals(
                array(
                        'vfs://root' . DIRECTORY_SEPARATOR . '.',
                        'vfs://root' . DIRECTORY_SEPARATOR . '..',
                        'vfs://root' . DIRECTORY_SEPARATOR . 'lost+found'
                ),
                $results
        );
    }
}
