Skip to content

Commit ff46999

Browse files
eugen-shulimovibbem
authored andcommitted
fix: fix removeWhitespace for diffs
1 parent 53b82e1 commit ff46999

2 files changed

Lines changed: 48 additions & 43 deletions

File tree

src/main/java/org/variantsync/diffdetective/experiments/thesis_es/UnparseAnalysis.java

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ private void reportErrorToFile(Analysis analysis, String errorMessage) throws IO
187187
++errorCount;
188188
}
189189

190-
public static String removeWhitespace(String string) {
190+
public static String removeWhitespace(String string, boolean diff) {
191191
if (string.isEmpty()) {
192192
return "";
193193
} else {
@@ -197,7 +197,11 @@ public static String removeWhitespace(String string) {
197197
String line = "";
198198
while ((line = in.readLine()) != null) {
199199
if (!line.replaceAll("\\s+", "").isEmpty()) {
200-
result.append(line.trim());
200+
String temp = line.trim();
201+
if (diff && !(temp.charAt(0) == '+' || temp.charAt(0) == '-')) {
202+
temp = " " + temp;
203+
}
204+
result.append(temp);
201205
result.append("\n");
202206
}
203207
}
@@ -242,28 +246,28 @@ public static VariationDiffParseOptions optionsSetter(int i) {
242246
}
243247
}
244248

245-
public static boolean equalsText(String text1, String text2, boolean whitespace) {
249+
public static boolean equalsText(String text1, String text2, boolean whitespace, boolean diff) {
246250
if (whitespace) {
247251
return text1.equals(text2);
248252
} else {
249-
return removeWhitespace(text1).equals(removeWhitespace(text2));
253+
return removeWhitespace(text1, diff).equals(removeWhitespace(text2, diff));
250254
}
251255
}
252256

253257
public static boolean[][] runTestsDiff(String text) {
254258
boolean[][] array = new boolean[2][8];
255259
for (int i = 0; i < 4; i++) {
256260
String diff = parseUnparseDiff(text, optionsSetter(i));
257-
array[0][i] = equalsText(text, diff, true);
258-
array[0][i + 4] = equalsText(text, diff, false);
261+
array[0][i] = equalsText(text, diff, true, true);
262+
array[0][i + 4] = equalsText(text, diff, false, true);
259263
array[1][i] = (equalsText(VariationUnparser.undiff(text, Time.BEFORE),
260-
VariationUnparser.undiff(diff, Time.BEFORE), true)
264+
VariationUnparser.undiff(diff, Time.BEFORE), true, true)
261265
&& equalsText(VariationUnparser.undiff(text, Time.AFTER),
262-
VariationUnparser.undiff(diff, Time.AFTER), true))
266+
VariationUnparser.undiff(diff, Time.AFTER), true, true))
263267
|| (equalsText(VariationUnparser.undiff(text, Time.BEFORE),
264-
VariationUnparser.undiff(diff, Time.BEFORE), false)
268+
VariationUnparser.undiff(diff, Time.BEFORE), false, true)
265269
&& equalsText(VariationUnparser.undiff(text, Time.AFTER),
266-
VariationUnparser.undiff(diff, Time.AFTER), false));
270+
VariationUnparser.undiff(diff, Time.AFTER), false, true));
267271
array[1][i + 4] = false;
268272
}
269273
return array;
@@ -273,25 +277,26 @@ public static boolean[] runTestsTree(String text) {
273277
boolean[] array = new boolean[8];
274278
for (int i = 0; i < 4; i++) {
275279
String temp = parseUnparseTree(text, optionsSetter(i));
276-
array[i] = equalsText(text, temp, true);
277-
array[i + 4] = equalsText(text, temp, false);
280+
array[i] = equalsText(text, temp, true, false);
281+
array[i + 4] = equalsText(text, temp, false, false);
278282
}
279283
return array;
280284
}
281285

282286
public static boolean[] runDataTest(String textDiff, String treeBefore, String treeAfter) throws IOException {
283287
boolean[] array = new boolean[8];
284288
array[0] = JGitDiff.textDiff(treeBefore, treeAfter, SupportedAlgorithm.MYERS).equals(textDiff);
285-
array[1] = removeWhitespace(JGitDiff.textDiff(treeBefore, treeAfter, SupportedAlgorithm.MYERS))
286-
.equals(removeWhitespace(textDiff));
289+
array[1] = removeWhitespace(JGitDiff.textDiff(treeBefore, treeAfter, SupportedAlgorithm.MYERS), true)
290+
.equals(removeWhitespace(textDiff, true));
287291
array[2] = JGitDiff.textDiff(treeBefore, treeAfter, SupportedAlgorithm.HISTOGRAM).equals(textDiff);
288-
array[3] = removeWhitespace(JGitDiff.textDiff(treeBefore, treeAfter, SupportedAlgorithm.HISTOGRAM))
289-
.equals(removeWhitespace(textDiff));
292+
array[3] = removeWhitespace(JGitDiff.textDiff(treeBefore, treeAfter, SupportedAlgorithm.HISTOGRAM), true)
293+
.equals(removeWhitespace(textDiff, true));
290294
array[4] = treeBefore.equals(VariationUnparser.undiff(textDiff, Time.BEFORE));
291-
array[5] = removeWhitespace(treeBefore)
292-
.equals(removeWhitespace(VariationUnparser.undiff(textDiff, Time.BEFORE)));
295+
array[5] = removeWhitespace(treeBefore, false)
296+
.equals(removeWhitespace(VariationUnparser.undiff(textDiff, Time.BEFORE), false));
293297
array[6] = treeAfter.equals(VariationUnparser.undiff(textDiff, Time.AFTER));
294-
array[7] = removeWhitespace(treeAfter).equals(removeWhitespace(VariationUnparser.undiff(textDiff, Time.AFTER)));
298+
array[7] = removeWhitespace(treeAfter, false)
299+
.equals(removeWhitespace(VariationUnparser.undiff(textDiff, Time.AFTER), false));
295300
return array;
296301
}
297302

src/test/java/VariationUnparserTest.java

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void testTree() {
6464
VariationTree<DiffLinesLabel> tree = VariationTree.fromText(source, VariationTreeSource.Unknown,
6565
VariationDiffParseOptions.Default);
6666
temp = VariationUnparser.variationTreeUnparser(tree);
67-
System.out.println(removeWhitespace(source).equals(removeWhitespace(temp)));
67+
System.out.println(removeWhitespace(source, false).equals(removeWhitespace(temp, false)));
6868
// System.out.println(removeWhitespace(source));
6969
// System.out.println("Ende");
7070
// System.out.println(removeWhitespace(temp));
@@ -84,11 +84,11 @@ public void testDiffSemEq() {
8484
.readString(Path.of("src", "test", "resources", "unparser", "diff", "diff.diff"));
8585
VariationDiff<DiffLinesLabel> diff = VariationDiff.fromDiff(source, VariationDiffParseOptions.Default);
8686
temp = VariationUnparser.variationDiffUnparser(diff);
87-
System.out.println(removeWhitespace(source).equals(removeWhitespace(temp)));
88-
System.out.println(removeWhitespace(VariationUnparser.undiff(source, Time.BEFORE))
89-
.equals(removeWhitespace(VariationUnparser.undiff(temp, Time.BEFORE))));
90-
System.out.println(removeWhitespace(VariationUnparser.undiff(source, Time.AFTER))
91-
.equals(removeWhitespace(VariationUnparser.undiff(temp, Time.AFTER))));
87+
System.out.println(removeWhitespace(source, true).equals(removeWhitespace(temp, true)));
88+
System.out.println(removeWhitespace(VariationUnparser.undiff(source, Time.BEFORE), false)
89+
.equals(removeWhitespace(VariationUnparser.undiff(temp, Time.BEFORE), false)));
90+
System.out.println(removeWhitespace(VariationUnparser.undiff(source, Time.AFTER), false)
91+
.equals(removeWhitespace(VariationUnparser.undiff(temp, Time.AFTER), false)));
9292

9393
// System.out.println(removeWhitespace(source));
9494
// System.out.println("Ende");
@@ -114,11 +114,11 @@ public static void testCaseTree(Path testCasePath) {
114114
String unparse4 = parseUnparseTree(testCasePath, new VariationDiffParseOptions(true, true));
115115
System.out.println(temp.equals(unparse1) + " " + temp.equals(unparse2) + " " + temp.equals(unparse3) + " "
116116
+ temp.equals(unparse4));
117-
temp = removeWhitespace(temp);
118-
unparse1 = removeWhitespace(unparse1);
119-
unparse2 = removeWhitespace(unparse2);
120-
unparse3 = removeWhitespace(unparse3);
121-
unparse4 = removeWhitespace(unparse4);
117+
temp = removeWhitespace(temp, false);
118+
unparse1 = removeWhitespace(unparse1, false);
119+
unparse2 = removeWhitespace(unparse2, false);
120+
unparse3 = removeWhitespace(unparse3, false);
121+
unparse4 = removeWhitespace(unparse4, false);
122122
System.out.println(temp.equals(unparse1) + " " + temp.equals(unparse2) + " " + temp.equals(unparse3) + " "
123123
+ temp.equals(unparse4));
124124
}
@@ -151,19 +151,19 @@ public static void testCaseDiff(Path testCasePath) {
151151
System.out.println(temp1.equals(unparse11) + " " + temp2.equals(unparse12) + " " + temp1.equals(unparse21) + " "
152152
+ temp2.equals(unparse22) + " " + temp1.equals(unparse31) + " " + temp2.equals(unparse32) + " "
153153
+ temp1.equals(unparse41) + " " + temp2.equals(unparse42));
154-
System.out.println(removeWhitespace(temp1).equals(removeWhitespace(unparse11)) + " "
155-
+ removeWhitespace(temp2).equals(removeWhitespace(unparse12)) + " "
156-
+ removeWhitespace(temp1).equals(removeWhitespace(unparse21)) + " "
157-
+ removeWhitespace(temp2).equals(removeWhitespace(unparse22)) + " "
158-
+ removeWhitespace(temp1).equals(removeWhitespace(unparse31)) + " "
159-
+ removeWhitespace(temp2).equals(removeWhitespace(unparse32)) + " "
160-
+ removeWhitespace(temp1).equals(removeWhitespace(unparse41)) + " "
161-
+ removeWhitespace(temp2).equals(removeWhitespace(unparse42)));
162-
temp = removeWhitespace(temp);
163-
unparse1 = removeWhitespace(unparse1);
164-
unparse2 = removeWhitespace(unparse2);
165-
unparse3 = removeWhitespace(unparse3);
166-
unparse4 = removeWhitespace(unparse4);
154+
System.out.println(removeWhitespace(temp1, false).equals(removeWhitespace(unparse11, false)) + " "
155+
+ removeWhitespace(temp2, false).equals(removeWhitespace(unparse12, false)) + " "
156+
+ removeWhitespace(temp1, false).equals(removeWhitespace(unparse21, false)) + " "
157+
+ removeWhitespace(temp2, false).equals(removeWhitespace(unparse22, false)) + " "
158+
+ removeWhitespace(temp1, false).equals(removeWhitespace(unparse31, false)) + " "
159+
+ removeWhitespace(temp2, false).equals(removeWhitespace(unparse32, false)) + " "
160+
+ removeWhitespace(temp1, false).equals(removeWhitespace(unparse41, false)) + " "
161+
+ removeWhitespace(temp2, false).equals(removeWhitespace(unparse42, false)));
162+
temp = removeWhitespace(temp, true);
163+
unparse1 = removeWhitespace(unparse1, true);
164+
unparse2 = removeWhitespace(unparse2, true);
165+
unparse3 = removeWhitespace(unparse3, true);
166+
unparse4 = removeWhitespace(unparse4, true);
167167
System.out.println(temp.equals(unparse1) + " " + temp.equals(unparse2) + " " + temp.equals(unparse3) + " "
168168
+ temp.equals(unparse4));
169169
}

0 commit comments

Comments
 (0)