<?php 
 
require_once '/data/priv/prog/diff/StringDiff.php'; 
 
/** 
 * Test class for StringDiff. 
 * Generated by PHPUnit on 2013-02-10 at 22:02:43. 
 */ 
class StringDiffTest extends PHPUnit_Framework_TestCase 
{ 
 
     
    public function testTripartite() 
    { 
        $s = 'abc'; 
        $middle = 'b'; 
        $expected = array('a', 'b', 'c'); 
        $actual = StringDiff::tripartite($s, $middle); 
        $this->assertEquals($expected, $actual, 'nice split in middle'); 
    } 
    public function testTripartiteZeroHead() 
    { 
        $s = 'bc'; 
        $middle = 'b'; 
        $expected = array('', 'b', 'c'); 
        $actual = StringDiff::tripartite($s, $middle); 
        $this->assertEquals($expected, $actual, 'split with empty head'); 
    } 
    public function testTripartiteZeroTail() 
    { 
        $s = 'ab'; 
        $middle = 'b'; 
        $expected = array('a', 'b', ''); 
        $actual = StringDiff::tripartite($s, $middle); 
        $this->assertEquals($expected, $actual, 'split with empty tail'); 
    } 
    public function testTripartiteZeroHeadAndTail() 
    { 
        $s = 'b'; 
        $middle = 'b'; 
        $expected = array('', 'b', ''); 
        $actual = StringDiff::tripartite($s, $middle); 
        $this->assertEquals($expected, $actual, 'split with empty head and tail'); 
    } 
 
    public function testDiffEmptyHead () 
    { 
        $a = 'ab'; 
        $b = 'ac'; 
        $expected = 'a<del>b</del><ins>c</ins>'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testDiffEmptyTail () 
    { 
        $a = 'ab'; 
        $b = 'cb'; 
        $expected = '<del>a</del><ins>c</ins>b'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testDiffEmptyHeadAndTail () 
    { 
        $a = 'a'; 
        $b = 'a'; 
        $expected = 'a'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testDiffWithRecursion () 
    { 
        $a = 'abc aaabbcc dbc'; 
        $b = 'adc aaabbcc dac'; 
        $expected = 'a<del>b</del><ins>d</ins>c aaabbcc d<del>b</del><ins>a</ins>c'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testDiffWithThai () 
    { 
        $a = '????????????????????????????????????????????????????'; 
        $b = '??????????????????????????????????????????????'; 
        $expected = '??????????????????????????????<del>??????</del>????????????????'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
     
    public function testForLackOfOverlap(){ 
        $a = 'xxxxxxxxxxxxxxaaxxxxxxxxxxxxxx'; 
        $b = 'yyyyyyyyyyyyyyaayyyyyyyyyyyyyy'; 
        $expected = '<del>xxxxxxxxxxxxxxaaxxxxxxxxxxxxxx</del><ins>yyyyyyyyyyyyyyaayyyyyyyyyyyyyy</ins>'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
        $actual = StringDiff::diff($a, $b, 100.0); //pushing the overlap threshold down 
        $expected = '<del>xxxxxxxxxxxxxx</del><ins>yyyyyyyyyyyyyy</ins>aa<del>xxxxxxxxxxxxxx</del><ins>yyyyyyyyyyyyyy</ins>'; 
        $this->assertEquals($expected, $actual); 
    } 
     
    public function testOverlap(){ 
        $a = 'xxxxxaaaaaaaaxxxxx'; 
        $b = 'yyyyyaaaaaaaayyyyy'; 
        $expected = 'xxxxx<overlap>aaaaaaaa</overlap>xxxxx'; 
        $actual = StringDiff::overlap($a, $b); 
        $this->assertEquals($expected, $actual); 
        $expected = 'yyyyy<overlap>aaaaaaaa</overlap>yyyyy'; 
        $actual = StringDiff::overlap($b, $a); 
        $this->assertEquals($expected, $actual); 
        $a = 'xxxxxaxxxxx'; 
        $b = 'yyyyyayyyyy'; 
        $expected = 'xxxxxaxxxxx'; 
        $actual = StringDiff::overlap($a, $b);//threshold 3.0 too high 
        $this->assertEquals($expected, $actual); 
        $expected = 'xxxxx<overlap>a</overlap>xxxxx'; 
        $actual = StringDiff::overlap($a, $b, 100.0);//pushing threshold down 
        $this->assertEquals($expected, $actual); 
    } 
     
    public function testDiffEmptyArgs(){ 
        $a = ''; 
        $b = ''; 
        $expected = ''; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testDiffEmptyA(){ 
        $a = ''; 
        $b = 'xxx'; 
        $expected = '<ins>xxx</ins>'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testDiffEmptyB(){ 
        $a = 'xxx'; 
        $b = ''; 
        $expected = '<del>xxx</del>'; 
        $actual = StringDiff::diff($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testOverlapEmptyArgs(){ 
        $a = ''; 
        $b = ''; 
        $expected = ''; 
        $actual = StringDiff::overlap($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testOverlapEmptyA(){ 
        $a = ''; 
        $b = 'xxx'; 
        $expected = ''; 
        $actual = StringDiff::overlap($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
    public function testOverlapEmptyB(){ 
        $a = 'xxx'; 
        $b = ''; 
        $expected = 'xxx'; 
        $actual = StringDiff::overlap($a, $b); 
        $this->assertEquals($expected, $actual); 
    } 
     
} 
?> 
 
 |