11package diffutils ;
22
3- import java .util .Arrays ;
4- import java .util .List ;
5-
63import difflib .DiffRow ;
74import difflib .DiffRowGenerator ;
8-
95import junit .framework .TestCase ;
106
7+ import java .util .Arrays ;
8+ import java .util .List ;
9+
10+ import static org .hamcrest .core .Is .is ;
11+ import static org .junit .Assert .assertThat ;
12+
1113public class DiffRowGeneratorTest extends TestCase {
1214
1315 public void testGenerator_Default () {
@@ -35,7 +37,7 @@ public void testGenerator_InlineDiff() {
3537 print (rows );
3638
3739 assertEquals (3 , rows .size ());
38- assertTrue (rows .get (0 ).getOldLine ().indexOf ("<span " ) > 0 );
40+ assertTrue (rows .get (0 ).getOldLine ().indexOf ("<del> " ) > 0 );
3941 }
4042
4143 public void testGenerator_IgnoreWhitespaces () {
@@ -56,6 +58,101 @@ public void testGenerator_IgnoreWhitespaces() {
5658 assertEquals (rows .get (3 ).getTag (), DiffRow .Tag .CHANGE );
5759 }
5860
61+ public void testChangeToEmptyLine () {
62+ String first = "Test \n \n o\n " ;
63+ String second ="Test\n \n o\n " ;
64+
65+ DiffRowGenerator generator = new DiffRowGenerator .Builder ()
66+ .showInlineDiffs (true )
67+ .columnWidth (Integer .MAX_VALUE ) // do not wrap
68+ .build ();
69+ List <DiffRow > rows = generator .generateDiffRows (split (first ), split (second ));
70+ print (rows );
71+
72+ assertEquals (3 , rows .size ());
73+ assertThat (rows .size (), is (3 ));
74+ assertThat (rows .get (0 ).getTag (), is (DiffRow .Tag .CHANGE ));
75+ assertThat (rows .get (0 ).getOldLine ().indexOf ("<del>" ), is (4 ));
76+ assertThat (rows .get (1 ).getTag (), is (DiffRow .Tag .CHANGE ));
77+ assertThat (rows .get (1 ).getOldLine ().indexOf ("<del>" ), is (0 ));
78+ assertThat (rows .get (2 ).getTag (), is (DiffRow .Tag .EQUAL ));
79+ }
80+
81+ public void testChangeToTwoEmptyLine () {
82+ String first = "One\n \n Two\n \n Three\n " ;
83+ String second ="One\n \n Two\n \n Three\n " ;
84+
85+ DiffRowGenerator generator = new DiffRowGenerator .Builder ()
86+ .showInlineDiffs (true )
87+ .columnWidth (Integer .MAX_VALUE ) // do not wrap
88+ .build ();
89+ List <DiffRow > rows = generator .generateDiffRows (split (first ), split (second ));
90+ print (rows );
91+
92+ assertEquals (5 , rows .size ());
93+ assertThat (rows .get (0 ).getTag (), is (DiffRow .Tag .EQUAL ));
94+
95+ assertThat (rows .get (1 ).getTag (), is (DiffRow .Tag .CHANGE ));
96+ assertThat (rows .get (1 ).getOldLine ().indexOf ("<del>" ), is (0 ));
97+
98+ assertThat (rows .get (2 ).getTag (), is (DiffRow .Tag .EQUAL ));
99+
100+ assertThat (rows .get (3 ).getTag (), is (DiffRow .Tag .CHANGE ));
101+ assertThat (rows .get (3 ).getOldLine ().indexOf ("<del>" ), is (0 ));
102+
103+ }
104+
105+ public void testDeleteLine () {
106+ String first ="Equal Line\n Deleted Line\n Equal Line 2\n " ;
107+ String second = "Equal Line\n Equal Line 2\n " ;
108+
109+ DiffRowGenerator generator = new DiffRowGenerator .Builder ()
110+ .showInlineDiffs (true )
111+ .columnWidth (Integer .MAX_VALUE ) // do not wrap
112+ .build ();
113+ List <DiffRow > rows = generator .generateDiffRows (split (first ), split (second ));
114+ print (rows );
115+
116+ assertThat (rows .size (), is (3 ));
117+ assertThat (rows .get (0 ).getTag (), is (DiffRow .Tag .EQUAL ));
118+ assertThat (rows .get (1 ).getTag (), is (DiffRow .Tag .DELETE ));
119+ assertThat (rows .get (2 ).getTag (), is (DiffRow .Tag .EQUAL ));
120+ }
121+
122+ public void testInsertedLine () {
123+ String first = "Equal Line\n Equal Line 2\n " ;
124+ String second = "Equal Line\n Deleted Line\n Equal Line 2\n " ;
125+
126+ DiffRowGenerator generator = new DiffRowGenerator .Builder ()
127+ .showInlineDiffs (true )
128+ .columnWidth (Integer .MAX_VALUE ) // do not wrap
129+ .build ();
130+ List <DiffRow > rows = generator .generateDiffRows (split (first ), split (second ));
131+ print (rows );
132+
133+ assertThat (rows .size (), is (3 ));
134+ assertThat (rows .get (0 ).getTag (), is (DiffRow .Tag .EQUAL ));
135+ assertThat (rows .get (1 ).getTag (), is (DiffRow .Tag .INSERT ));
136+ assertThat (rows .get (2 ).getTag (), is (DiffRow .Tag .EQUAL ));
137+ }
138+
139+ public void testChangedLine () {
140+ String first = "Equal Line\n Line to be changed\n Equal Line 2\n " ;
141+ String second = "Equal Line\n Line changed test\n Equal Line 2\n " ;
142+
143+ DiffRowGenerator generator = new DiffRowGenerator .Builder ()
144+ .showInlineDiffs (true )
145+ .columnWidth (Integer .MAX_VALUE ) // do not wrap
146+ .build ();
147+ List <DiffRow > rows = generator .generateDiffRows (split (first ), split (second ));
148+ print (rows );
149+
150+ assertThat (rows .size (), is (3 ));
151+ assertThat (rows .get (0 ).getTag (), is (DiffRow .Tag .EQUAL ));
152+ assertThat (rows .get (1 ).getTag (), is (DiffRow .Tag .CHANGE ));
153+ assertThat (rows .get (2 ).getTag (), is (DiffRow .Tag .EQUAL ));
154+ }
155+
59156 private List <String > split (String content ) {
60157 return Arrays .asList (content .split ("\n " ));
61158 }
0 commit comments