/** * Proxy setting properties to real objects. * * @param string $name Property name. * @param mixed $value Property value. * * @throws \UnexpectedValueException If property unknown. * @return float */ public function __set($name, $value) { switch ($name) { case 'Diff_Timeout': $this->diff->setTimeout($value); break; case 'Diff_EditCost': $this->diff->setEditCost($value); break; case 'Match_Threshold': $this->match->setThreshold($value); break; case 'Match_Distance': $this->match->setDistance($value); break; case 'Match_MaxBits': $this->match->setMaxBits($value); break; case 'Patch_DeleteThreshold': $this->patch->setDeleteTreshold($value); break; case 'Patch_Margin': $this->patch->setMargin($value); break; default: throw new \UnexpectedValueException('Unknown property: ' . $name); } }
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); }