You are here

class RegexDirectoryIteratorTest in Drupal 10

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php \Drupal\Tests\Component\FileSystem\RegexDirectoryIteratorTest
  2. 9 core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php \Drupal\Tests\Component\FileSystem\RegexDirectoryIteratorTest

@coversDefaultClass \Drupal\Component\FileSystem\RegexDirectoryIterator @group FileSystem

Hierarchy

Expanded class hierarchy of RegexDirectoryIteratorTest

File

core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php, line 13

Namespace

Drupal\Tests\Component\FileSystem
View source
class RegexDirectoryIteratorTest extends TestCase {

  /**
   * @covers ::accept
   * @dataProvider providerTestRegexDirectoryIterator
   */
  public function testRegexDirectoryIterator(array $directory, $regex, array $expected) {
    vfsStream::setup('root', NULL, $directory);
    $iterator = new RegexDirectoryIterator(vfsStream::url('root'), $regex);

    // Create an array of filenames to assert against.
    $file_list = array_map(function (\SplFileInfo $file) {
      return $file
        ->getFilename();
    }, array_values(iterator_to_array($iterator)));
    $this
      ->assertSame($expected, $file_list);
  }

  /**
   * Provider for self::testRegexDirectoryIterator().
   */
  public function providerTestRegexDirectoryIterator() {
    return [
      [
        [
          '1.yml' => '',
        ],
        '/\\.yml$/',
        [
          '1.yml',
        ],
      ],
      [
        [
          '1.yml' => '',
          '2.yml' => '',
          '3.txt' => '',
        ],
        '/\\.yml$/',
        [
          '1.yml',
          '2.yml',
        ],
      ],
      [
        [
          '1.yml' => '',
          '2.yml' => '',
          '3.txt' => '',
        ],
        '/\\.txt/',
        [
          '3.txt',
        ],
      ],
      [
        [
          '1.yml' => '',
          // Ensure we don't recurse in directories even if that match the
          // regex.
          '2.yml' => [
            '3.yml' => '',
            '4.yml' => '',
          ],
          '3.txt' => '',
        ],
        '/\\.yml$/',
        [
          '1.yml',
        ],
      ],
      [
        [
          '1.yml' => '',
          '2.yml' => '',
          '3.txt' => '',
        ],
        '/^\\d/',
        [
          '1.yml',
          '2.yml',
          '3.txt',
        ],
      ],
      [
        [
          '1.yml' => '',
          '2.yml' => '',
          '3.txt' => '',
        ],
        '/^\\D/',
        [],
      ],
    ];
  }

}

Members