/**
  * @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);
 }