Version 1
[yaffs-website] / vendor / mikey179 / vfsStream / src / test / php / org / bovigo / vfs / vfsStreamContainerIteratorTestCase.php
diff --git a/vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamContainerIteratorTestCase.php b/vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamContainerIteratorTestCase.php
new file mode 100644 (file)
index 0000000..a0d7f74
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+/**
+ * This file is part of vfsStream.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @package  org\bovigo\vfs
+ */
+namespace org\bovigo\vfs;
+/**
+ * Test for org\bovigo\vfs\vfsStreamContainerIterator.
+ */
+class vfsStreamContainerIteratorTestCase extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * instance to test
+     *
+     * @type  vfsStreamDirectory
+     */
+    private $dir;
+    /**
+     * child one
+     *
+     * @type  \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $mockChild1;
+    /**
+     * child two
+     *
+     * @type  \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $mockChild2;
+
+    /**
+     * set up test environment
+     */
+    public function setUp()
+    {
+        $this->dir = new vfsStreamDirectory('foo');
+        $this->mockChild1 = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
+        $this->mockChild1->expects($this->any())
+                         ->method('getName')
+                         ->will($this->returnValue('bar'));
+        $this->dir->addChild($this->mockChild1);
+        $this->mockChild2 = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
+        $this->mockChild2->expects($this->any())
+                         ->method('getName')
+                         ->will($this->returnValue('baz'));
+        $this->dir->addChild($this->mockChild2);
+    }
+
+    /**
+     * clean up test environment
+     */
+    public function tearDown()
+    {
+        vfsStream::enableDotfiles();
+    }
+
+    /**
+     * @return  array
+     */
+    public function provideSwitchWithExpectations()
+    {
+        return array(array(function() { vfsStream::disableDotfiles(); },
+                           array()
+                     ),
+                     array(function() { vfsStream::enableDotfiles(); },
+                           array('.', '..')
+                     )
+        );
+    }
+
+    private function getDirName($dir)
+    {
+        if (is_string($dir)) {
+            return $dir;
+        }
+
+
+        return $dir->getName();
+    }
+
+    /**
+     * @param  \Closure  $dotFilesSwitch
+     * @param  array     $dirNames
+     * @test
+     * @dataProvider  provideSwitchWithExpectations
+     */
+    public function iteration(\Closure $dotFilesSwitch, array $dirs)
+    {
+        $dirs[] = $this->mockChild1;
+        $dirs[] = $this->mockChild2;
+        $dotFilesSwitch();
+        $dirIterator = $this->dir->getIterator();
+        foreach ($dirs as $dir) {
+            $this->assertEquals($this->getDirName($dir), $dirIterator->key());
+            $this->assertTrue($dirIterator->valid());
+            if (!is_string($dir)) {
+                $this->assertSame($dir, $dirIterator->current());
+            }
+
+            $dirIterator->next();
+        }
+
+        $this->assertFalse($dirIterator->valid());
+        $this->assertNull($dirIterator->key());
+        $this->assertNull($dirIterator->current());
+    }
+}