/** * @test */ public function verify_commit_ordering() { $class1 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass1'); $class2 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass2'); $class3 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass3'); $class4 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass4'); $class5 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass5'); $calc = new CommitOrderCalculator(); $calc->addClass($class1); $calc->addClass($class2); $calc->addClass($class3); $calc->addClass($class4); $calc->addClass($class5); $calc->addDependency($class1, $class2); $calc->addDependency($class2, $class3); $calc->addDependency($class3, $class4); $calc->addDependency($class5, $class1); $sorted = $calc->getCommitOrder(); // There is only 1 valid ordering for this constellation $expected = array_map(function (ClassMetadata $md) { return $md->name; }, [$class5, $class1, $class2, $class3, $class4]); $this->assertSame($expected, $sorted); }