public function testCleanupEfficiency()
 {
     // Cleanup operationally trivial equalities.
     $this->d->setEditCost(4);
     // Null case.
     $this->d->setChanges(array());
     $this->d->cleanupEfficiency();
     $this->assertEquals(array(), $this->d->getChanges());
     // No elimination.
     $this->d->setChanges(array(array(Diff::DELETE, "ab"), array(Diff::INSERT, "12"), array(Diff::EQUAL, "wxyz"), array(Diff::DELETE, "cd"), array(Diff::INSERT, "34")));
     $this->d->cleanupEfficiency();
     $this->assertEquals(array(array(Diff::DELETE, "ab"), array(Diff::INSERT, "12"), array(Diff::EQUAL, "wxyz"), array(Diff::DELETE, "cd"), array(Diff::INSERT, "34")), $this->d->getChanges());
     // Four-edit elimination.
     $this->d->setChanges(array(array(Diff::DELETE, "ab"), array(Diff::INSERT, "12"), array(Diff::EQUAL, "xyz"), array(Diff::DELETE, "cd"), array(Diff::INSERT, "34")));
     $this->d->cleanupEfficiency();
     $this->assertEquals(array(array(Diff::DELETE, "abxyzcd"), array(Diff::INSERT, "12xyz34")), $this->d->getChanges());
     // Three-edit elimination.
     $this->d->setChanges(array(array(Diff::INSERT, "12"), array(Diff::EQUAL, "x"), array(Diff::DELETE, "cd"), array(Diff::INSERT, "34")));
     $this->d->cleanupEfficiency();
     $this->assertEquals(array(array(Diff::DELETE, "xcd"), array(Diff::INSERT, "12x34")), $this->d->getChanges());
     // Backpass elimination.
     $this->d->setChanges(array(array(Diff::DELETE, "ab"), array(Diff::INSERT, "12"), array(Diff::EQUAL, "xy"), array(Diff::INSERT, "34"), array(Diff::EQUAL, "z"), array(Diff::DELETE, "cd"), array(Diff::INSERT, "56")));
     $this->d->cleanupEfficiency();
     $this->assertEquals(array(array(Diff::DELETE, "abxyzcd"), array(Diff::INSERT, "12xy34z56")), $this->d->getChanges());
     // High cost elimination.
     $this->d->setEditCost(5);
     $this->d->setChanges(array(array(Diff::DELETE, "ab"), array(Diff::INSERT, "12"), array(Diff::EQUAL, "wxyz"), array(Diff::DELETE, "cd"), array(Diff::INSERT, "34")));
     $this->d->cleanupEfficiency();
     $this->assertEquals(array(array(Diff::DELETE, "abwxyzcd"), array(Diff::INSERT, "12wxyz34")), $this->d->getChanges());
     $this->d->setEditCost(4);
 }
 /**
  * Reduce the number of edits by eliminating operationally trivial equalities.
  * Modifies $diffs.
  *
  * @param array $diffs Array of diff arrays.
  */
 public function diff_cleanupEfficiency(&$diffs)
 {
     $this->diff->setChanges($diffs);
     $this->diff->cleanupEfficiency();
     $diffs = $this->diff->getChanges();
 }