14
14
import java .util .ArrayList ;
15
15
import java .util .Arrays ;
16
16
import java .util .List ;
17
+ import static java .util .stream .Collectors .joining ;
17
18
import static org .junit .Assert .assertEquals ;
18
19
import static org .junit .Assert .fail ;
19
20
import org .junit .Test ;
@@ -38,14 +39,14 @@ public void testGenerateUnified() throws DiffException, IOException {
38
39
39
40
verify (origLines , revLines , "original.txt" , "revised.txt" );
40
41
}
41
- //
42
- // @Test
43
- // public void testGenerateUnifiedWithOneDelta() throws DiffException, IOException {
44
- // List<String> origLines = fileToLines(TestConstants.MOCK_FOLDER + "one_delta_test_original.txt");
45
- // List<String> revLines = fileToLines(TestConstants.MOCK_FOLDER + "one_delta_test_revised.txt");
46
- //
47
- // verify(origLines, revLines, "one_delta_test_original.txt", "one_delta_test_revised.txt");
48
- // }
42
+
43
+ @ Test
44
+ public void testGenerateUnifiedWithOneDelta () throws DiffException , IOException {
45
+ List <String > origLines = fileToLines (TestConstants .MOCK_FOLDER + "one_delta_test_original.txt" );
46
+ List <String > revLines = fileToLines (TestConstants .MOCK_FOLDER + "one_delta_test_revised.txt" );
47
+
48
+ verify (origLines , revLines , "one_delta_test_original.txt" , "one_delta_test_revised.txt" );
49
+ }
49
50
50
51
@ Test
51
52
public void testGenerateUnifiedDiffWithoutAnyDeltas () throws DiffException , IOException {
@@ -61,60 +62,71 @@ public void testGenerateUnifiedDiffWithoutAnyDeltas() throws DiffException, IOEx
61
62
System .out .println (writer );
62
63
}
63
64
64
- // @Test
65
- // public void testDiff_Issue10() throws IOException {
66
- // final List<String> baseLines = fileToLines(TestConstants.MOCK_FOLDER + "issue10_base.txt");
67
- // final List<String> patchLines = fileToLines(TestConstants.MOCK_FOLDER + "issue10_patch.txt");
68
- // final Patch<String> p = UnifiedDiffUtils.parseUnifiedDiff(patchLines);
69
- // try {
70
- // DiffUtils.patch(baseLines, p);
71
- // } catch (PatchFailedException e) {
72
- // fail(e.getMessage());
73
- // }
74
- // }
75
- //
76
- // /**
77
- // * Issue 12
78
- // */
79
- // @Test
80
- // public void testPatchWithNoDeltas() throws DiffException, IOException {
81
- // final List<String> lines1 = fileToLines(TestConstants.MOCK_FOLDER + "issue11_1.txt");
82
- // final List<String> lines2 = fileToLines(TestConstants.MOCK_FOLDER + "issue11_2.txt");
83
- // verify(lines1, lines2, "issue11_1.txt", "issue11_2.txt");
84
- // }
85
- //
86
- // @Test
87
- // public void testDiff5() throws DiffException, IOException {
88
- // final List<String> lines1 = fileToLines(TestConstants.MOCK_FOLDER + "5A.txt");
89
- // final List<String> lines2 = fileToLines(TestConstants.MOCK_FOLDER + "5B.txt");
90
- // verify(lines1, lines2, "5A.txt", "5B.txt");
91
- // }
92
- //
93
- // /**
94
- // * Issue 19
95
- // */
96
- // @Test
97
- // public void testDiffWithHeaderLineInText() throws DiffException {
98
- // List<String> original = new ArrayList<>();
99
- // List<String> revised = new ArrayList<>();
100
- //
101
- // original.add("test line1");
102
- // original.add("test line2");
103
- // original.add("test line 4");
104
- // original.add("test line 5");
105
- //
106
- // revised.add("test line1");
107
- // revised.add("test line2");
108
- // revised.add("@@ -2,6 +2,7 @@");
109
- // revised.add("test line 4");
110
- // revised.add("test line 5");
111
- //
112
- // Patch<String> patch = DiffUtils.diff(original, revised);
113
- // List<String> udiff = UnifiedDiffUtils.generateUnifiedDiff("original", "revised",
114
- // original, patch, 10);
115
- // UnifiedDiffUtils.parseUnifiedDiff(udiff);
116
- // }
117
- //
65
+ @ Test
66
+ public void testDiff_Issue10 () throws IOException {
67
+ final List <String > baseLines = fileToLines (TestConstants .MOCK_FOLDER + "issue10_base.txt" );
68
+ final List <String > patchLines = fileToLines (TestConstants .MOCK_FOLDER + "issue10_patch.txt" );
69
+
70
+ UnifiedDiff unifiedDiff = UnifiedDiffReader .parseUnifiedDiff (
71
+ new ByteArrayInputStream (patchLines .stream ().collect (joining ("\n " )).getBytes ())
72
+ );
73
+
74
+ final Patch <String > p = unifiedDiff .getFiles ().get (0 ).getPatch ();
75
+ try {
76
+ DiffUtils .patch (baseLines , p );
77
+ } catch (PatchFailedException e ) {
78
+ fail (e .getMessage ());
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Issue 12
84
+ */
85
+ @ Test
86
+ public void testPatchWithNoDeltas () throws DiffException , IOException {
87
+ final List <String > lines1 = fileToLines (TestConstants .MOCK_FOLDER + "issue11_1.txt" );
88
+ final List <String > lines2 = fileToLines (TestConstants .MOCK_FOLDER + "issue11_2.txt" );
89
+ verify (lines1 , lines2 , "issue11_1.txt" , "issue11_2.txt" );
90
+ }
91
+
92
+ @ Test
93
+ public void testDiff5 () throws DiffException , IOException {
94
+ final List <String > lines1 = fileToLines (TestConstants .MOCK_FOLDER + "5A.txt" );
95
+ final List <String > lines2 = fileToLines (TestConstants .MOCK_FOLDER + "5B.txt" );
96
+ verify (lines1 , lines2 , "5A.txt" , "5B.txt" );
97
+ }
98
+
99
+ /**
100
+ * Issue 19
101
+ */
102
+ @ Test
103
+ public void testDiffWithHeaderLineInText () throws DiffException , IOException {
104
+ List <String > original = new ArrayList <>();
105
+ List <String > revised = new ArrayList <>();
106
+
107
+ original .add ("test line1" );
108
+ original .add ("test line2" );
109
+ original .add ("test line 4" );
110
+ original .add ("test line 5" );
111
+
112
+ revised .add ("test line1" );
113
+ revised .add ("test line2" );
114
+ revised .add ("@@ -2,6 +2,7 @@" );
115
+ revised .add ("test line 4" );
116
+ revised .add ("test line 5" );
117
+
118
+ Patch <String > patch = DiffUtils .diff (original , revised );
119
+ StringWriter writer = new StringWriter ();
120
+ UnifiedDiffWriter .write (
121
+ UnifiedDiff .from ("header" , "tail" , UnifiedDiffFile .from ("original" , "revised" , patch )),
122
+ name -> original ,
123
+ writer , 10 );
124
+
125
+ System .out .println (writer .toString ());
126
+
127
+ UnifiedDiff unifiedDiff = UnifiedDiffReader .parseUnifiedDiff (new ByteArrayInputStream (writer .toString ().getBytes ()));
128
+ }
129
+
118
130
private void verify (List <String > origLines , List <String > revLines ,
119
131
String originalFile , String revisedFile ) throws DiffException , IOException {
120
132
Patch <String > patch = DiffUtils .diff (origLines , revLines );
@@ -129,10 +141,15 @@ private void verify(List<String> origLines, List<String> revLines,
129
141
130
142
UnifiedDiff unifiedDiff = UnifiedDiffReader .parseUnifiedDiff (new ByteArrayInputStream (writer .toString ().getBytes ()));
131
143
132
- Patch <String > fromUnifiedPatch = unifiedDiff .getFiles ().get (0 ).getPatch ();
133
144
List <String > patchedLines ;
134
145
try {
135
- patchedLines = fromUnifiedPatch .applyTo (origLines );
146
+ // if (unifiedDiff.getFiles().isEmpty()) {
147
+ // patchedLines = new ArrayList<>(origLines);
148
+ // } else {
149
+ // Patch<String> fromUnifiedPatch = unifiedDiff.getFiles().get(0).getPatch();
150
+ // patchedLines = fromUnifiedPatch.applyTo(origLines);
151
+ // }
152
+ patchedLines = unifiedDiff .spplyPatchTo (file -> originalFile .equals (file ), origLines );
136
153
assertEquals (revLines .size (), patchedLines .size ());
137
154
for (int i = 0 ; i < revLines .size (); i ++) {
138
155
String l1 = revLines .get (i );
0 commit comments