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\FilecontentFilterIterator;
16 class FilecontentFilterIteratorTest extends IteratorTestCase
18 public function testAccept()
20 $inner = new MockFileListIterator(array('test.txt'));
21 $iterator = new FilecontentFilterIterator($inner, array(), array());
22 $this->assertIterator(array('test.txt'), $iterator);
25 public function testDirectory()
27 $inner = new MockFileListIterator(array('directory'));
28 $iterator = new FilecontentFilterIterator($inner, array('directory'), array());
29 $this->assertIterator(array(), $iterator);
32 public function testUnreadableFile()
34 $inner = new MockFileListIterator(array('file r-'));
35 $iterator = new FilecontentFilterIterator($inner, array('file r-'), array());
36 $this->assertIterator(array(), $iterator);
40 * @dataProvider getTestFilterData
42 public function testFilter(\Iterator $inner, array $matchPatterns, array $noMatchPatterns, array $resultArray)
44 $iterator = new FilecontentFilterIterator($inner, $matchPatterns, $noMatchPatterns);
45 $this->assertIterator($resultArray, $iterator);
48 public function getTestFilterData()
50 $inner = new MockFileListIterator();
52 $inner[] = new MockSplFileInfo(array(
54 'contents' => 'Lorem ipsum...',
59 $inner[] = new MockSplFileInfo(array(
61 'contents' => 'dolor sit...',
66 $inner[] = new MockSplFileInfo(array(
67 'name' => 'some/other/dir/third.php',
68 'contents' => 'amet...',
73 $inner[] = new MockSplFileInfo(array(
74 'name' => 'unreadable-file.txt',
81 array($inner, array('.'), array(), array('a.txt', 'b.yml', 'some/other/dir/third.php')),
82 array($inner, array('ipsum'), array(), array('a.txt')),
83 array($inner, array('i', 'amet'), array('Lorem', 'amet'), array('b.yml')),