xref: /dokuwiki/_test/tests/inc/difference_engine.test.php (revision d3b71b9db34736457aa221f20ac19242984eb524)
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">&#160;</td><td class="diff-context"></td><td class="diff-lineheader">&#160;</td><td class="diff-context"></td></tr>
21*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context">aaa</td><td class="diff-lineheader">&#160;</td><td class="diff-context">aaa</td></tr>
22*d3b71b9dSPhy<tr><td colspan="2">&#160;</td><td class="diff-lineheader">+</td><td class="diff-addedline"></td></tr>
23*d3b71b9dSPhy<tr><td colspan="2">&#160;</td><td class="diff-lineheader">+</td><td class="diff-addedline">bbb</td></tr>
24*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context"></td><td class="diff-lineheader">&#160;</td><td class="diff-context"></td></tr>
25*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context">bbb</td><td class="diff-lineheader">&#160;</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">&#160;</td><td class="diff-context">ccc</td><td class="diff-lineheader">&#160;</td><td class="diff-context">ccc</td></tr>
30*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context"></td><td class="diff-lineheader">&#160;</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">&#160;</td><td class="diff-context"></td><td class="diff-lineheader">&#160;</td><td class="diff-context"></td></tr>
37*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context">eee</td><td class="diff-lineheader">&#160;</td><td class="diff-context">eee</td></tr>
38*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline"></td><td colspan="2">&#160;</td></tr>
39*d3b71b9dSPhy<tr><td class="diff-lineheader">-</td><td class="diff-deletedline">fff</td><td colspan="2">&#160;</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 @@&#160;<span class="diff-deletedline"><del>removed</del></span>&#160;<span class="diff-addedline">created</span></td></tr>
49*d3b71b9dSPhy
50*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</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">&#160;</td><td class="diff-context"></td></tr>
52*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context">aaa</td></tr>
53*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-addedline"></td></tr>
54*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-addedline">bbb</td></tr>
55*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context"></td></tr>
56*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context">bbb</td></tr>
57*d3b71b9dSPhy<tr><td colspan="2" class="diff-blockheader">@@ Line -7,11 +9,5 @@&#160;<span class="diff-deletedline"><del>removed</del></span>&#160;<span class="diff-addedline">created</span></td></tr>
58*d3b71b9dSPhy
59*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context">ccc</td></tr>
60*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context"></td></tr>
61*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td><span class="diff-deletedline"><del>ddd </del></span></td></tr>
62*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td><span class="diff-deletedline"><del> </del></span></td></tr>
63*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td><span class="diff-deletedline"><del>ddd </del></span></td></tr>
64*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td><span class="diff-deletedline"><del> </del></span></td></tr>
65*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</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">&#160;</td><td class="diff-context"></td></tr>
67*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-context">eee</td></tr>
68*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</td><td class="diff-deletedline"><del></del></td></tr>
69*d3b71b9dSPhy<tr><td class="diff-lineheader">&#160;</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