1414import java .util .ArrayList ;
1515import java .util .Arrays ;
1616import java .util .List ;
17+ import static java .util .stream .Collectors .joining ;
1718import static org .junit .Assert .assertEquals ;
1819import static org .junit .Assert .fail ;
1920import org .junit .Test ;
@@ -38,14 +39,14 @@ public void testGenerateUnified() throws DiffException, IOException {
3839
3940verify (origLines ,revLines ,"original.txt" ,"revised.txt" );
4041 }
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+ }
4950
5051@ Test
5152public void testGenerateUnifiedDiffWithoutAnyDeltas ()throws DiffException ,IOException {
@@ -61,60 +62,71 @@ public void testGenerateUnifiedDiffWithoutAnyDeltas() throws DiffException, IOEx
6162System .out .println (writer );
6263 }
6364
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+
118130private void verify (List <String >origLines ,List <String >revLines ,
119131String originalFile ,String revisedFile )throws DiffException ,IOException {
120132Patch <String >patch =DiffUtils .diff (origLines ,revLines );
@@ -129,10 +141,15 @@ private void verify(List<String> origLines, List<String> revLines,
129141
130142UnifiedDiff unifiedDiff =UnifiedDiffReader .parseUnifiedDiff (new ByteArrayInputStream (writer .toString ().getBytes ()));
131143
132- Patch <String >fromUnifiedPatch =unifiedDiff .getFiles ().get (0 ).getPatch ();
133144List <String >patchedLines ;
134145try {
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 );
136153assertEquals (revLines .size (),patchedLines .size ());
137154for (int i =0 ;i <revLines .size ();i ++) {
138155String l1 =revLines .get (i );