Yaffs site version 1.1
[yaffs-website] / vendor / symfony / finder / Tests / Iterator / PathFilterIteratorTest.php
diff --git a/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php
new file mode 100644 (file)
index 0000000..6e10550
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Finder\Tests\Iterator;
+
+use Symfony\Component\Finder\Iterator\PathFilterIterator;
+
+class PathFilterIteratorTest extends IteratorTestCase
+{
+    /**
+     * @dataProvider getTestFilterData
+     */
+    public function testFilter(\Iterator $inner, array $matchPatterns, array $noMatchPatterns, array $resultArray)
+    {
+        $iterator = new PathFilterIterator($inner, $matchPatterns, $noMatchPatterns);
+        $this->assertIterator($resultArray, $iterator);
+    }
+
+    public function getTestFilterData()
+    {
+        $inner = new MockFileListIterator();
+
+        //PATH:   A/B/C/abc.dat
+        $inner[] = new MockSplFileInfo(array(
+            'name' => 'abc.dat',
+            'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'C'.DIRECTORY_SEPARATOR.'abc.dat',
+        ));
+
+        //PATH:   A/B/ab.dat
+        $inner[] = new MockSplFileInfo(array(
+            'name' => 'ab.dat',
+            'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'ab.dat',
+        ));
+
+        //PATH:   A/a.dat
+        $inner[] = new MockSplFileInfo(array(
+            'name' => 'a.dat',
+            'relativePathname' => 'A'.DIRECTORY_SEPARATOR.'a.dat',
+        ));
+
+        //PATH:   copy/A/B/C/abc.dat.copy
+        $inner[] = new MockSplFileInfo(array(
+            'name' => 'abc.dat.copy',
+            'relativePathname' => 'copy'.DIRECTORY_SEPARATOR.'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'C'.DIRECTORY_SEPARATOR.'abc.dat',
+        ));
+
+        //PATH:   copy/A/B/ab.dat.copy
+        $inner[] = new MockSplFileInfo(array(
+            'name' => 'ab.dat.copy',
+            'relativePathname' => 'copy'.DIRECTORY_SEPARATOR.'A'.DIRECTORY_SEPARATOR.'B'.DIRECTORY_SEPARATOR.'ab.dat',
+        ));
+
+        //PATH:   copy/A/a.dat.copy
+        $inner[] = new MockSplFileInfo(array(
+            'name' => 'a.dat.copy',
+            'relativePathname' => 'copy'.DIRECTORY_SEPARATOR.'A'.DIRECTORY_SEPARATOR.'a.dat',
+        ));
+
+        return array(
+            array($inner, array('/^A/'),       array(), array('abc.dat', 'ab.dat', 'a.dat')),
+            array($inner, array('/^A\/B/'),    array(), array('abc.dat', 'ab.dat')),
+            array($inner, array('/^A\/B\/C/'), array(), array('abc.dat')),
+            array($inner, array('/A\/B\/C/'),  array(), array('abc.dat', 'abc.dat.copy')),
+
+            array($inner, array('A'),      array(), array('abc.dat', 'ab.dat', 'a.dat', 'abc.dat.copy', 'ab.dat.copy', 'a.dat.copy')),
+            array($inner, array('A/B'),    array(), array('abc.dat', 'ab.dat', 'abc.dat.copy', 'ab.dat.copy')),
+            array($inner, array('A/B/C'),  array(), array('abc.dat', 'abc.dat.copy')),
+
+            array($inner, array('copy/A'),      array(), array('abc.dat.copy', 'ab.dat.copy', 'a.dat.copy')),
+            array($inner, array('copy/A/B'),    array(), array('abc.dat.copy', 'ab.dat.copy')),
+            array($inner, array('copy/A/B/C'),  array(), array('abc.dat.copy')),
+        );
+    }
+}