1*d3b71b9dSPhy<?php 2*d3b71b9dSPhy 3*d3b71b9dSPhyrequire_once DOKU_INC.'inc/DifferenceEngine.php'; 4*d3b71b9dSPhy 5*d3b71b9dSPhy/** 6*d3b71b9dSPhy * Class difference_engine_test 7*d3b71b9dSPhy */ 8*d3b71b9dSPhyclass difference_engine_test extends DokuWikiTest { 9*d3b71b9dSPhy public $x = "zzz\n\naaa\n\nbbb\n\nccc\n\nddd\n\nddd\n\nddd\n\neee\n\nfff"; 10*d3b71b9dSPhy public $y = "ddd\n\naaa\n\nbbb\n\nbbb\n\nccc\n\nccc\n\neee"; 11*d3b71b9dSPhy 12*d3b71b9dSPhy function test_render_table(){ 13*d3b71b9dSPhy $diff = new Diff(explode("\n", $this->x), explode("\n", $this->y)); 14*d3b71b9dSPhy $diffformatter = new TableDiffFormatter(); 15*d3b71b9dSPhy $actual = $diffformatter->format($diff); 16*d3b71b9dSPhy $expected = '<tr><td class="diff-blockheader" colspan="2">Line 1:</td> 17*d3b71b9dSPhy<td class="diff-blockheader" colspan="2">Line 1:</td> 18*d3b71b9dSPhy</tr> 19*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"><strong class="diff-mark">zzz</strong></td><td class="diff-lineheader">+</td><td class="diff-addedline"><strong class="diff-mark">ddd</strong></td></tr> 20*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 21*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">aaa</td><td class="diff-lineheader"> </td><td class="diff-context">aaa</td></tr> 22*d3b71b9dSPhy<tr><td colspan="2"> </td><td class="diff-lineheader">+</td><td class="diff-addedline"></td></tr> 23*d3b71b9dSPhy<tr><td colspan="2"> </td><td class="diff-lineheader">+</td><td class="diff-addedline">bbb</td></tr> 24*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 25*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">bbb</td><td class="diff-lineheader"> </td><td class="diff-context">bbb</td></tr> 26*d3b71b9dSPhy<tr><td class="diff-blockheader" colspan="2">Line 7:</td> 27*d3b71b9dSPhy<td class="diff-blockheader" colspan="2">Line 9:</td> 28*d3b71b9dSPhy</tr> 29*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">ccc</td><td class="diff-lineheader"> </td><td class="diff-context">ccc</td></tr> 30*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 31*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"><strong class="diff-mark">ddd </strong></td><td class="diff-lineheader">+</td><td class="diff-addedline"><strong class="diff-mark">ccc</strong></td></tr> 32*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"><strong class="diff-mark"> </strong></td><td class="diff-lineheader">+</td><td class="diff-addedline"></td></tr> 33*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"><strong class="diff-mark">ddd </strong></td><td class="diff-lineheader">+</td><td class="diff-addedline"></td></tr> 34*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"><strong class="diff-mark"> </strong></td><td class="diff-lineheader">+</td><td class="diff-addedline"></td></tr> 35*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"><strong class="diff-mark">ddd</strong></td><td class="diff-lineheader">+</td><td class="diff-addedline"></td></tr> 36*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 37*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">eee</td><td class="diff-lineheader"> </td><td class="diff-context">eee</td></tr> 38*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"></td><td colspan="2"> </td></tr> 39*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline">fff</td><td colspan="2"> </td></tr> 40*d3b71b9dSPhy'; 41*d3b71b9dSPhy $this->assertEquals($expected, $actual); 42*d3b71b9dSPhy } 43*d3b71b9dSPhy 44*d3b71b9dSPhy function test_render_inline(){ 45*d3b71b9dSPhy $diff = new Diff(explode("\n", $this->x), explode("\n", $this->y)); 46*d3b71b9dSPhy $diffformatter = new InlineDiffFormatter(); 47*d3b71b9dSPhy $actual = $diffformatter->format($diff); 48*d3b71b9dSPhy $expected = '<tr><td colspan="2" class="diff-blockheader">@@ Line -1,5 +1,7 @@ <span class="diff-deletedline"><del>removed</del></span> <span class="diff-addedline">created</span></td></tr> 49*d3b71b9dSPhy 50*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td><span class="diff-deletedline"><del>zzz</del></span><span class="diff-addedline">ddd</span></td></tr> 51*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 52*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">aaa</td></tr> 53*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-addedline"></td></tr> 54*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-addedline">bbb</td></tr> 55*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 56*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">bbb</td></tr> 57*d3b71b9dSPhy<tr><td colspan="2" class="diff-blockheader">@@ Line -7,11 +9,5 @@ <span class="diff-deletedline"><del>removed</del></span> <span class="diff-addedline">created</span></td></tr> 58*d3b71b9dSPhy 59*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">ccc</td></tr> 60*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 61*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td><span class="diff-deletedline"><del>ddd </del></span></td></tr> 62*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td><span class="diff-deletedline"><del> </del></span></td></tr> 63*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td><span class="diff-deletedline"><del>ddd </del></span></td></tr> 64*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td><span class="diff-deletedline"><del> </del></span></td></tr> 65*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td><span class="diff-deletedline"><del>ddd</del></span><span class="diff-addedline">ccc</span></td></tr> 66*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context"></td></tr> 67*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-context">eee</td></tr> 68*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-deletedline"><del></del></td></tr> 69*d3b71b9dSPhy<tr><td class="diff-lineheader"> </td><td class="diff-deletedline"><del>fff</del></td></tr> 70*d3b71b9dSPhy'; 71*d3b71b9dSPhy $this->assertEquals($expected, $actual); 72*d3b71b9dSPhy } 73*d3b71b9dSPhy 74*d3b71b9dSPhy function test_engine_diag(){ 75*d3b71b9dSPhy // initialize 76*d3b71b9dSPhy $eng = new _DiffEngine; 77*d3b71b9dSPhy $eng->diff(explode("\n", $this->x), explode("\n", $this->y)); 78*d3b71b9dSPhy // check 79*d3b71b9dSPhy $this->assertEquals( 80*d3b71b9dSPhy array(9, array(array(0,0),array(1,2),array(3,4),array(4,5),array(5,7),array(6,9),array(7,10),array(9,12),array(15,13))), 81*d3b71b9dSPhy $eng->_diag(0, 15, 0, 13, 8) 82*d3b71b9dSPhy ); 83*d3b71b9dSPhy } 84*d3b71b9dSPhy} 85*d3b71b9dSPhy//Setup VIM: ex: et ts=4 : 86