dir = new vfsStreamDirectory('foo'); $this->mockChild1 = $this->bc_getMock('org\\bovigo\\vfs\\vfsStreamContent'); $this->mockChild1->expects($this->any()) ->method('getName') ->will($this->returnValue('bar')); $this->dir->addChild($this->mockChild1); $this->mockChild2 = $this->bc_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(): void { 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()); } }