/** * @dataProvider getTraverseOrderClasses */ public function testTraverseOrder($interfaceName, $parentName, $className, $class, $parent, $interface) { $store = new ArrayStore(); $store->setClasses(array($class, $parent, $interface)); $project = new Project($store); $visitor = $this->getMock('Sami\\Parser\\ClassVisitorInterface'); $visitor->expects($this->at(0))->method('visit')->with($project->loadClass($interfaceName)); $visitor->expects($this->at(1))->method('visit')->with($project->loadClass($parentName)); $visitor->expects($this->at(2))->method('visit')->with($project->loadClass($className)); $traverser = new ClassTraverser(); $traverser->addVisitor($visitor); $traverser->traverse($project); }