4760c1955b2972342161596ac20eb45dc0b5a0ef
[yaffs-website] / web / core / tests / Drupal / Tests / Component / FileSystem / RegexDirectoryIteratorTest.php
1 <?php
2
3 namespace Drupal\Tests\Component\FileSystem;
4
5 use Drupal\Component\FileSystem\RegexDirectoryIterator;
6 use org\bovigo\vfs\vfsStream;
7 use PHPUnit\Framework\TestCase;
8
9 /**
10  * @coversDefaultClass \Drupal\Component\FileSystem\RegexDirectoryIterator
11  * @group FileSystem
12  */
13 class RegexDirectoryIteratorTest extends TestCase {
14
15   /**
16    * @covers ::accept
17    * @dataProvider providerTestRegexDirectoryIterator
18    */
19   public function testRegexDirectoryIterator(array $directory, $regex, array $expected) {
20     vfsStream::setup('root', NULL, $directory);
21     $iterator = new RegexDirectoryIterator(vfsStream::url('root'), $regex);
22
23     // Create an array of filenames to assert against.
24     $file_list = array_map(function (\SplFileInfo $file) {
25       return $file->getFilename();
26     }, array_values(iterator_to_array($iterator)));
27
28     $this->assertSame($expected, $file_list);
29   }
30
31   /**
32    * Provider for self::testRegexDirectoryIterator().
33    */
34   public function providerTestRegexDirectoryIterator() {
35     return [
36       [
37         [
38           '1.yml' => '',
39         ],
40         '/\.yml$/',
41         [
42           '1.yml',
43         ],
44       ],
45       [
46         [
47           '1.yml' => '',
48           '2.yml' => '',
49           '3.txt' => '',
50         ],
51         '/\.yml$/',
52         [
53           '1.yml',
54           '2.yml',
55         ],
56       ],
57       [
58         [
59           '1.yml' => '',
60           '2.yml' => '',
61           '3.txt' => '',
62         ],
63         '/\.txt/',
64         [
65           '3.txt',
66         ],
67       ],
68       [
69         [
70           '1.yml' => '',
71           // Ensure we don't recurse in directories even if that match the
72           // regex.
73           '2.yml' => [
74             '3.yml' => '',
75             '4.yml' => '',
76           ],
77           '3.txt' => '',
78         ],
79         '/\.yml$/',
80         [
81           '1.yml',
82         ],
83       ],
84       [
85         [
86           '1.yml' => '',
87           '2.yml' => '',
88           '3.txt' => '',
89         ],
90         '/^\d/',
91         [
92           '1.yml',
93           '2.yml',
94           '3.txt'
95         ],
96       ],
97       [
98         [
99           '1.yml' => '',
100           '2.yml' => '',
101           '3.txt' => '',
102         ],
103         '/^\D/',
104         [],
105       ],
106     ];
107   }
108
109 }