4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Finder\Tests\Iterator;
14 use Symfony\Component\Finder\Iterator\PathFilterIterator;
16 class PathFilterIteratorTest extends IteratorTestCase
19 * @dataProvider getTestFilterData
21 public function testFilter(\Iterator $inner, array $matchPatterns, array $noMatchPatterns, array $resultArray)
23 $iterator = new PathFilterIterator($inner, $matchPatterns, $noMatchPatterns);
24 $this->assertIterator($resultArray, $iterator);
27 public function getTestFilterData()
29 $inner = new MockFileListIterator();
32 $inner[] = new MockSplFileInfo(array(
34 'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'C'.DIRECTORY_SEPARATOR.'abc.dat',
38 $inner[] = new MockSplFileInfo(array(
40 'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'ab.dat',
44 $inner[] = new MockSplFileInfo(array(
46 'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'a.dat',
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',
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',
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',
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')),
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')),
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')),