本文整理汇总了PHP中Match::setDistance方法的典型用法代码示例。如果您正苦于以下问题:PHP Match::setDistance方法的具体用法?PHP Match::setDistance怎么用?PHP Match::setDistance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Match
的用法示例。
在下文中一共展示了Match::setDistance方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __set
/**
* 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);
}
}
示例2: testApply
public function testApply()
{
$this->m->setDistance(1000);
$this->m->setThreshold(0.5);
$this->p->setDeleteTreshold(0.5);
// Null case.
$patches = $this->p->make("", "");
$this->assertEquals(array("Hello world.", array()), $this->p->apply($patches, "Hello world."));
// Exact match.
$patches = $this->p->make("The quick brown fox jumps over the lazy dog.", "That quick brown fox jumped over a lazy dog.");
$this->assertEquals(array("That quick brown fox jumped over a lazy dog.", array(true, true)), $this->p->apply($patches, "The quick brown fox jumps over the lazy dog."));
// Partial match.
$this->assertEquals(array("That quick red rabbit jumped over a tired tiger.", array(true, true)), $this->p->apply($patches, "The quick red rabbit jumps over the tired tiger."));
// Failed match.
$this->assertEquals(array("I am the very model of a modern major general.", array(false, false)), $this->p->apply($patches, "I am the very model of a modern major general."));
// Big delete, small change.
$patches = $this->p->make("x1234567890123456789012345678901234567890123456789012345678901234567890y", "xabcy");
$this->assertEquals(array("xabcy", array(true, true)), $this->p->apply($patches, "x123456789012345678901234567890-----++++++++++-----123456789012345678901234567890y"));
// Big delete, big change 1.
$patches = $this->p->make("x1234567890123456789012345678901234567890123456789012345678901234567890y", "xabcy");
$this->assertEquals(array("xabc12345678901234567890---------------++++++++++---------------12345678901234567890y", array(false, true)), $this->p->apply($patches, "x12345678901234567890---------------++++++++++---------------12345678901234567890y"));
// Big delete, big change 2.
$this->p->setDeleteTreshold(0.6);
$patches = $this->p->make("x1234567890123456789012345678901234567890123456789012345678901234567890y", "xabcy");
$this->assertEquals(array("xabcy", array(true, true)), $this->p->apply($patches, "x12345678901234567890---------------++++++++++---------------12345678901234567890y"));
$this->p->setDeleteTreshold(0.5);
// Compensate for failed patch.
$this->m->setDistance(0);
$this->m->setThreshold(0.0);
$patches = $this->p->make("abcdefghijklmnopqrstuvwxyz--------------------1234567890", "abcXXXXXXXXXXdefghijklmnopqrstuvwxyz--------------------1234567YYYYYYYYYY890");
$this->assertEquals(array("ABCDEFGHIJKLMNOPQRSTUVWXYZ--------------------1234567YYYYYYYYYY890", array(false, true)), $this->p->apply($patches, "ABCDEFGHIJKLMNOPQRSTUVWXYZ--------------------1234567890"));
$this->m->setDistance(1000);
$this->m->setThreshold(0.5);
// No side effects.
$patches = $this->p->make("", "test");
$patchesText = $this->p->toText($patches);
$this->p->apply($patches, "");
$this->assertEquals($patchesText, $this->p->toText($patches));
// No side effects with major delete.
$patches = $this->p->make("The quick brown fox jumps over the lazy dog.", "Woof");
$patchesText = $this->p->toText($patches);
$this->p->apply($patches, "The quick brown fox jumps over the lazy dog.");
$this->assertEquals($patchesText, $this->p->toText($patches));
// Edge exact match.
$patches = $this->p->make("", "test");
$this->assertEquals(array("test", array(true)), $this->p->apply($patches, ""));
// Near edge exact match.
$patches = $this->p->make("XY", "XtestY");
$this->assertEquals(array("XtestY", array(true)), $this->p->apply($patches, "XY"));
// Edge partial match.
$patches = $this->p->make("y", "y123");
$this->assertEquals(array("x123", array(true)), $this->p->apply($patches, "x"));
}
示例3: testBitap
public function testBitap()
{
$this->m->setDistance(100);
$this->m->setThreshold(0.5);
// Exact matches.
$this->assertEquals(5, $this->m->bitap("abcdefghijk", "fgh", 5));
$this->assertEquals(5, $this->m->bitap("abcdefghijk", "fgh", 0));
// Fuzzy matches.
$this->assertEquals(4, $this->m->bitap("abcdefghijk", "efxhi", 0));
$this->assertEquals(2, $this->m->bitap("abcdefghijk", "cdefxyhijk", 5));
$this->assertEquals(-1, $this->m->bitap("abcdefghijk", "bxy", 1));
// Overflow.
$this->assertEquals(2, $this->m->bitap("123456789xx0", "3456789x0", 2));
$this->assertEquals(0, $this->m->bitap("abcdef", "xxabc", 4));
$this->assertEquals(3, $this->m->bitap("abcdef", "defyy", 4));
$this->assertEquals(0, $this->m->bitap("abcdef", "xabcdefy", 0));
// Threshold test.
$this->m->setThreshold(0.4);
$this->assertEquals(4, $this->m->bitap("abcdefghijk", "efxyhi", 1));
$this->m->setThreshold(0.3);
$this->assertEquals(-1, $this->m->bitap("abcdefghijk", "efxyhi", 1));
$this->m->setThreshold(0.0);
$this->assertEquals(1, $this->m->bitap("abcdefghijk", "bcdef", 1));
$this->m->setThreshold(0.5);
// Multiple select.
$this->assertEquals(0, $this->m->bitap("abcdexyzabcde", "abccde", 3));
$this->assertEquals(8, $this->m->bitap("abcdexyzabcde", "abccde", 5));
// Distance test.
// Strict location.
$this->m->setDistance(10);
$this->assertEquals(-1, $this->m->bitap("abcdefghijklmnopqrstuvwxyz", "abcdefg", 24));
$this->assertEquals(0, $this->m->bitap("abcdefghijklmnopqrstuvwxyz", "abcdxxefg", 1));
//Loose location.
$this->m->setDistance(1000);
$this->assertEquals(0, $this->m->bitap("abcdefghijklmnopqrstuvwxyz", "abcdefg", 24));
}