1919import java .util .List ;
2020import static java .util .stream .Collectors .toList ;
2121import java .util .zip .ZipFile ;
22+ import static org .assertj .core .api .Assertions .assertThat ;
2223import static org .junit .jupiter .api .Assertions .assertEquals ;
2324import static org .junit .jupiter .api .Assertions .assertNotNull ;
2425import static org .junit .jupiter .api .Assertions .assertTrue ;
@@ -160,11 +161,11 @@ public void testDiffMyersExample1() {
160161 assertEquals (4 , patch .getDeltas ().size ());
161162 assertEquals ("Patch{deltas=[[DeleteDelta, position: 0, lines: [A, B]], [InsertDelta, position: 3, lines: [B]], [DeleteDelta, position: 5, lines: [B]], [InsertDelta, position: 7, lines: [C]]]}" , patch .toString ());
162163 }
163-
164+
164165 @ Test
165166 public void testDiff_Equal () {
166167 final Patch <String > patch = DiffUtils .diff (
167- Arrays .asList ("hhh" , "jjj" , "kkk" ),
168+ Arrays .asList ("hhh" , "jjj" , "kkk" ),
168169 Arrays .asList ("hhh" , "jjj" , "kkk" ), true );
169170 assertNotNull (patch );
170171 assertEquals (1 , patch .getDeltas ().size ());
@@ -173,22 +174,57 @@ public void testDiff_Equal() {
173174 assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" , "jjj" , "kkk" )), delta .getSource ());
174175 assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" , "jjj" , "kkk" )), delta .getTarget ());
175176 }
176-
177- @ Test
177+
178+ @ Test
178179 public void testDiff_InsertWithEqual () {
179180 final Patch <String > patch = DiffUtils .diff (Arrays .asList ("hhh" ), Arrays .
180181 asList ("hhh" , "jjj" , "kkk" ), true );
181182 assertNotNull (patch );
182183 assertEquals (2 , patch .getDeltas ().size ());
183-
184+
184185 AbstractDelta <String > delta = patch .getDeltas ().get (0 );
185186 assertTrue (delta instanceof EqualDelta );
186187 assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" )), delta .getSource ());
187188 assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" )), delta .getTarget ());
188-
189+
189190 delta = patch .getDeltas ().get (1 );
190191 assertTrue (delta instanceof InsertDelta );
191192 assertEquals (new Chunk <>(1 , Collections .<String >emptyList ()), delta .getSource ());
192193 assertEquals (new Chunk <>(1 , Arrays .asList ("jjj" , "kkk" )), delta .getTarget ());
193194 }
195+
196+ @ Test
197+ public void testDiff_ProblemIssue42 () {
198+ final Patch <String > patch = DiffUtils .diff (
199+ Arrays .asList ("The" , "dog" , "is" , "brown" ),
200+ Arrays .asList ("The" , "fox" , "is" , "down" ), true );
201+
202+ System .out .println (patch );
203+ assertNotNull (patch );
204+ assertEquals (4 , patch .getDeltas ().size ());
205+
206+
207+ assertThat (patch .getDeltas ()).extracting (d -> d .getType ().name ())
208+ .containsExactly ("EQUAL" , "CHANGE" , "EQUAL" , "CHANGE" );
209+
210+ AbstractDelta <String > delta = patch .getDeltas ().get (0 );
211+ assertTrue (delta instanceof EqualDelta );
212+ assertEquals (new Chunk <>(0 , Arrays .asList ("The" )), delta .getSource ());
213+ assertEquals (new Chunk <>(0 , Arrays .asList ("The" )), delta .getTarget ());
214+
215+ delta = patch .getDeltas ().get (1 );
216+ assertTrue (delta instanceof ChangeDelta );
217+ assertEquals (new Chunk <>(1 , Arrays .asList ("dog" )), delta .getSource ());
218+ assertEquals (new Chunk <>(1 , Arrays .asList ("fox" )), delta .getTarget ());
219+
220+ delta = patch .getDeltas ().get (2 );
221+ assertTrue (delta instanceof EqualDelta );
222+ assertEquals (new Chunk <>(2 , Arrays .asList ("is" )), delta .getSource ());
223+ assertEquals (new Chunk <>(2 , Arrays .asList ("is" )), delta .getTarget ());
224+
225+ delta = patch .getDeltas ().get (3 );
226+ assertTrue (delta instanceof ChangeDelta );
227+ assertEquals (new Chunk <>(3 , Arrays .asList ("brown" )), delta .getSource ());
228+ assertEquals (new Chunk <>(3 , Arrays .asList ("down" )), delta .getTarget ());
229+ }
194230}
0 commit comments