Yaffs site version 1.1
[yaffs-website] / vendor / symfony / finder / Tests / Iterator / PathFilterIteratorTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\Finder\Tests\Iterator;
13
14 use Symfony\Component\Finder\Iterator\PathFilterIterator;
15
16 class PathFilterIteratorTest extends IteratorTestCase
17 {
18     /**
19      * @dataProvider getTestFilterData
20      */
21     public function testFilter(\Iterator $inner, array $matchPatterns, array $noMatchPatterns, array $resultArray)
22     {
23         $iterator = new PathFilterIterator($inner, $matchPatterns, $noMatchPatterns);
24         $this->assertIterator($resultArray, $iterator);
25     }
26
27     public function getTestFilterData()
28     {
29         $inner = new MockFileListIterator();
30
31         //PATH:   A/B/C/abc.dat
32         $inner[] = new MockSplFileInfo(array(
33             'name' => 'abc.dat',
34             'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'C'.DIRECTORY_SEPARATOR.'abc.dat',
35         ));
36
37         //PATH:   A/B/ab.dat
38         $inner[] = new MockSplFileInfo(array(
39             'name' => 'ab.dat',
40             'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'ab.dat',
41         ));
42
43         //PATH:   A/a.dat
44         $inner[] = new MockSplFileInfo(array(
45             'name' => 'a.dat',
46             'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'a.dat',
47         ));
48
49         //PATH:   copy/A/B/C/abc.dat.copy
50         $inner[] = new MockSplFileInfo(array(
51             'name' => 'abc.dat.copy',
52             'relativePathname' => 'copy'.DIRECTORY_SEPARATOR.'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'C'.DIRECTORY_SEPARATOR.'abc.dat',
53         ));
54
55         //PATH:   copy/A/B/ab.dat.copy
56         $inner[] = new MockSplFileInfo(array(
57             'name' => 'ab.dat.copy',
58             'relativePathname' => 'copy'.DIRECTORY_SEPARATOR.'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'ab.dat',
59         ));
60
61         //PATH:   copy/A/a.dat.copy
62         $inner[] = new MockSplFileInfo(array(
63             'name' => 'a.dat.copy',
64             'relativePathname' => 'copy'.DIRECTORY_SEPARATOR.'A'.DIRECTORY_SEPARATOR.'a.dat',
65         ));
66
67         return array(
68             array($inner, array('/^A/'),       array(), array('abc.dat', 'ab.dat', 'a.dat')),
69             array($inner, array('/^A\/B/'),    array(), array('abc.dat', 'ab.dat')),
70             array($inner, array('/^A\/B\/C/'), array(), array('abc.dat')),
71             array($inner, array('/A\/B\/C/'),  array(), array('abc.dat', 'abc.dat.copy')),
72
73             array($inner, array('A'),      array(), array('abc.dat', 'ab.dat', 'a.dat', 'abc.dat.copy', 'ab.dat.copy', 'a.dat.copy')),
74             array($inner, array('A/B'),    array(), array('abc.dat', 'ab.dat', 'abc.dat.copy', 'ab.dat.copy')),
75             array($inner, array('A/B/C'),  array(), array('abc.dat', 'abc.dat.copy')),
76
77             array($inner, array('copy/A'),      array(), array('abc.dat.copy', 'ab.dat.copy', 'a.dat.copy')),
78             array($inner, array('copy/A/B'),    array(), array('abc.dat.copy', 'ab.dat.copy')),
79             array($inner, array('copy/A/B/C'),  array(), array('abc.dat.copy')),
80         );
81     }
82 }