19
19
import java .util .List ;
20
20
import static java .util .stream .Collectors .toList ;
21
21
import java .util .zip .ZipFile ;
22
+ import static org .assertj .core .api .Assertions .assertThat ;
22
23
import static org .junit .jupiter .api .Assertions .assertEquals ;
23
24
import static org .junit .jupiter .api .Assertions .assertNotNull ;
24
25
import static org .junit .jupiter .api .Assertions .assertTrue ;
@@ -160,11 +161,11 @@ public void testDiffMyersExample1() {
160
161
assertEquals (4 , patch .getDeltas ().size ());
161
162
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 ());
162
163
}
163
-
164
+
164
165
@ Test
165
166
public void testDiff_Equal () {
166
167
final Patch <String > patch = DiffUtils .diff (
167
- Arrays .asList ("hhh" , "jjj" , "kkk" ),
168
+ Arrays .asList ("hhh" , "jjj" , "kkk" ),
168
169
Arrays .asList ("hhh" , "jjj" , "kkk" ), true );
169
170
assertNotNull (patch );
170
171
assertEquals (1 , patch .getDeltas ().size ());
@@ -173,22 +174,57 @@ public void testDiff_Equal() {
173
174
assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" , "jjj" , "kkk" )), delta .getSource ());
174
175
assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" , "jjj" , "kkk" )), delta .getTarget ());
175
176
}
176
-
177
- @ Test
177
+
178
+ @ Test
178
179
public void testDiff_InsertWithEqual () {
179
180
final Patch <String > patch = DiffUtils .diff (Arrays .asList ("hhh" ), Arrays .
180
181
asList ("hhh" , "jjj" , "kkk" ), true );
181
182
assertNotNull (patch );
182
183
assertEquals (2 , patch .getDeltas ().size ());
183
-
184
+
184
185
AbstractDelta <String > delta = patch .getDeltas ().get (0 );
185
186
assertTrue (delta instanceof EqualDelta );
186
187
assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" )), delta .getSource ());
187
188
assertEquals (new Chunk <>(0 , Arrays .asList ("hhh" )), delta .getTarget ());
188
-
189
+
189
190
delta = patch .getDeltas ().get (1 );
190
191
assertTrue (delta instanceof InsertDelta );
191
192
assertEquals (new Chunk <>(1 , Collections .<String >emptyList ()), delta .getSource ());
192
193
assertEquals (new Chunk <>(1 , Arrays .asList ("jjj" , "kkk" )), delta .getTarget ());
193
194
}
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
+ }
194
230
}
0 commit comments