@@ -21,4 +21,58 @@ public function testMergedRendererReplaceCase()
2121 $ this ->assertStringContainsString ('<del ' , $ output );
2222 $ this ->assertStringContainsString ('<ins ' , $ output );
2323 }
24+
25+ public function testInsertCase ()
26+ {
27+ $ a = "line1 \nline2 " ;
28+ $ b = "line1 \nline2 \nline3 " ;
29+
30+ $ diff = new Diff ($ a , $ b );
31+ $ output = $ diff ->render (new Merged ());
32+
33+ $ this ->assertStringContainsString ('<ins ' , $ output );
34+ $ this ->assertStringContainsString ('line3 ' , $ output );
35+ }
36+
37+ public function testDeleteCase ()
38+ {
39+ $ a = "line1 \nline2 \nline3 " ;
40+ $ b = "line1 \nline3 " ;
41+
42+ $ diff = new Diff ($ a , $ b );
43+ $ output = $ diff ->render (new Merged ());
44+
45+ $ this ->assertStringContainsString ('ChangeDelete ' , $ output );
46+ $ this ->assertStringContainsString ('line2 ' , $ output );
47+ }
48+
49+ public function testMixedChanges ()
50+ {
51+ $ a = "alpha \nbeta \ngamma \ndelta " ;
52+ $ b = "alpha \nBETA \ngamma \nnew-delta " ;
53+
54+ $ diff = new Diff ($ a , $ b );
55+ $ output = $ diff ->render (new Merged ());
56+
57+ $ this ->assertStringContainsString ('<del>beta</del> ' , $ output );
58+ $ this ->assertStringContainsString ('<ins>BETA</ins> ' , $ output );
59+ $ this ->assertStringContainsString ('<ins>new-</ins> ' , $ output );
60+ $ this ->assertStringContainsString ('delta ' , $ output );
61+ }
62+
63+
64+ public function testReplaceCaseTriggersMergedBlock ()
65+ {
66+ $ a = "line1 \nsame \nline3 " ;
67+ $ b = "line1 \nchanged \nline3 " ;
68+
69+ $ diff = new Diff ($ a , $ b );
70+ $ output = $ diff ->render (new Merged ());
71+
72+ // Hier sollte der Block ab Zeile 250 greifen:
73+ $ this ->assertStringContainsString ('<del ' , $ output );
74+ $ this ->assertStringContainsString ('<ins ' , $ output );
75+ $ this ->assertStringContainsString ('same ' , $ output );
76+ $ this ->assertStringContainsString ('changed ' , $ output );
77+ }
2478}
0 commit comments