22
33import difflib .DiffUtils ;
44import difflib .Patch ;
5- import difflib .PatchFailedException ;
65import junit .framework .TestCase ;
76
87import java .io .BufferedReader ;
98import java .io .File ;
109import java .io .FileReader ;
1110import java .io .IOException ;
12- import java .util .ArrayList ;
1311import java .util .LinkedList ;
1412import java .util .List ;
1513
1614public class GenerateUnifiedDiffTest extends TestCase {
1715 static final String FS = File .separator ;
18- static final String originalFilename = "test" + FS + "mocks" + FS + "original.txt" ;
19- static final String revisedFilename = "test" + FS + "mocks" + FS + "revised.txt" ;
20- static final String originalFilenameOneDelta = "test" + FS + "mocks" + FS + "one_delta_test_original.txt" ;
21- static final String revisedFilenameOneDelta = "test" + FS + "mocks" + FS + "one_delta_test_revised.txt" ;
2216
2317 public List <String > fileToLines (String filename ) {
2418 List <String > lines = new LinkedList <String >();
@@ -34,53 +28,18 @@ public List<String> fileToLines(String filename) {
3428 return lines ;
3529 }
3630
37- /**
38- * Tests the Unified Diff generation by creating a Patch, then
39- * creating the Unified Diff representation, then parsing that
40- * Unified Diff, and applying the patch to the original unrevised
41- * text, then comparing that to the original revised text.
42- *
43- * @author Bill James (tankerbay@gmail.com)
44- */
45- public void testGenerateUnified () {
46- List <String > origLines = fileToLines (originalFilename );
47- List <String > revLines = fileToLines (revisedFilename );
31+ public void testGenerateUnified () throws Exception {
32+ List <String > origLines = fileToLines ("test" + FS + "mocks" + FS + "original.txt" );
33+ List <String > revLines = fileToLines ("test" + FS + "mocks" + FS + "revised.txt" );
4834
49- testGenerateUnified (origLines , revLines );
35+ verify (origLines , revLines );
5036 }
5137
52- /**
53- * Tests the Unified Diff generation for diff with one delta.
54- */
55- public void testGenerateUnifiedWithOneDelta () {
56- List <String > origLines = fileToLines (originalFilenameOneDelta );
57- List <String > revLines = fileToLines (revisedFilenameOneDelta );
38+ public void testGenerateUnifiedWithOneDelta () throws Exception {
39+ List <String > origLines = fileToLines ("test" + FS + "mocks" + FS + "one_delta_test_original.txt" );
40+ List <String > revLines = fileToLines ("test" + FS + "mocks" + FS + "one_delta_test_revised.txt" );
5841
59- testGenerateUnified (origLines , revLines );
60- }
61-
62- private void testGenerateUnified (List <String > origLines , List <String > revLines ) {
63- Patch p = DiffUtils .diff (origLines , revLines );
64- List <String > unifiedDiff = DiffUtils .generateUnifiedDiff (
65- originalFilename , revisedFilename , origLines , p , 10 );
66-
67- Patch fromUnifiedPatch = DiffUtils .parseUnifiedDiff (unifiedDiff );
68- List <String > patchedLines = new ArrayList <String >();
69- try {
70- patchedLines = (List <String >) fromUnifiedPatch .applyTo (origLines );
71- } catch (PatchFailedException e ) {
72- // TODO Auto-generated catch block
73- fail (e .getMessage ());
74- }
75-
76- assertTrue (revLines .size () == patchedLines .size ());
77- for (int i = 0 ; i < revLines .size (); i ++) {
78- String l1 = revLines .get (i );
79- String l2 = patchedLines .get (i );
80- if (l1 .equals (l2 ) == false ) {
81- fail ("Line " + (i + 1 ) + " of the patched file did not match the revised original" );
82- }
83- }
42+ verify (origLines , revLines );
8443 }
8544
8645 public void testDiff_Issue10 () throws Exception {
@@ -93,12 +52,30 @@ public void testDiff_Issue10() throws Exception {
9352 public void testDiff_Issue11 () throws Exception {
9453 final List <String > lines1 = fileToLines ("test" + FS + "mocks" + FS + "issue11_1.txt" );
9554 final List <String > lines2 = fileToLines ("test" + FS + "mocks" + FS + "issue11_2.txt" );
55+ verify (lines1 , lines2 );
56+ }
57+
58+ public void testDiff5 () throws Exception {
59+ final List <String > lines1 = fileToLines ("test" + FS + "mocks" + FS + "5A.txt" );
60+ final List <String > lines2 = fileToLines ("test" + FS + "mocks" + FS + "5B.txt" );
61+ verify (lines1 , lines2 );
62+ }
9663
64+ private void verify (List <String > origLines , List <String > revLines ) throws Exception {
65+ Patch p = DiffUtils .diff (origLines , revLines );
66+ List <String > unifiedDiff = DiffUtils .generateUnifiedDiff (
67+ "test" + FS + "mocks" + FS + "original.txt" , "test" + FS + "mocks" + FS + "revised.txt" , origLines , p , 10 );
68+
69+ Patch fromUnifiedPatch = DiffUtils .parseUnifiedDiff (unifiedDiff );
70+ List <String > patchedLines = (List <String >) fromUnifiedPatch .applyTo (origLines );
9771
98- final Patch patch = DiffUtils .diff (lines1 , lines2 );
99- final String fileName = "xxx" ;
100- final List <String > stringList = DiffUtils .generateUnifiedDiff (fileName , fileName , lines1 , patch , 3 );
101- final Patch x = DiffUtils .parseUnifiedDiff (stringList );
102- DiffUtils .patch (lines1 , x );
72+ assertTrue (revLines .size () == patchedLines .size ());
73+ for (int i = 0 ; i < revLines .size (); i ++) {
74+ String l1 = revLines .get (i );
75+ String l2 = patchedLines .get (i );
76+ if (!l1 .equals (l2 )) {
77+ fail ("Line " + (i + 1 ) + " of the patched file did not match the revised original" );
78+ }
79+ }
10380 }
10481}
0 commit comments