|
|
@@ -2,6 +2,8 @@ package jplag;
|
|
|
|
|
|
import org.junit.Test;
|
|
|
|
|
|
+import java.util.Optional;
|
|
|
+
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
|
|
public class NormalComparisonTest extends TestBase {
|
|
|
@@ -48,7 +50,48 @@ public class NormalComparisonTest extends TestBase {
|
|
|
JPlagResult result = runJPlagWithDefaultOptions("PartialPlagiarism");
|
|
|
|
|
|
assertEquals(5, result.getNumberOfSubmissions());
|
|
|
- // TODO SH: Add way more detailed assertions
|
|
|
+ assertEquals(10, result.getAllComparisons().size());
|
|
|
+
|
|
|
+ // All comparisons with E shall have no matches
|
|
|
+ result.getAllComparisons()
|
|
|
+ .stream()
|
|
|
+ .filter(comparison ->
|
|
|
+ comparison.secondSubmission.name.equals("E") ||
|
|
|
+ comparison.firstSubmission.name.equals("E"))
|
|
|
+ .forEach(comparison ->
|
|
|
+ assertEquals(0f, comparison.percent(), 0.1f)
|
|
|
+ );
|
|
|
+
|
|
|
+ // Hard coded assertions on selected comparisons
|
|
|
+ assertEquals(24.6f, getSelectedPercent(result, "A", "B"), 0.1f);
|
|
|
+ assertEquals(99.7f, getSelectedPercent(result, "A", "C"), 0.1f);
|
|
|
+ assertEquals(77.9f, getSelectedPercent(result, "A", "D"), 0.1f);
|
|
|
+ assertEquals(24.6f, getSelectedPercent(result, "B", "C"), 0.1f);
|
|
|
+ assertEquals(28.3f, getSelectedPercent(result, "B", "D"), 0.1f);
|
|
|
+ assertEquals(77.9f, getSelectedPercent(result, "C", "D"), 0.1f);
|
|
|
+
|
|
|
+ // More detailed assertions for the plagiarism in A-D
|
|
|
+ var biggestMatch = getSelectedComparison(result, "A", "D");
|
|
|
+ assertEquals(96.4f, biggestMatch.get().percentMaxAB(), 0.1f);
|
|
|
+ assertEquals(65.3f, biggestMatch.get().percentMinAB(), 0.1f);
|
|
|
+ assertEquals(12, biggestMatch.get().matches.size());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO SH: Methods like this should be moved to the API and also should accept wildcards
|
|
|
+ private float getSelectedPercent(JPlagResult result, String nameA, String nameB) {
|
|
|
+ return getSelectedComparison(result, nameA, nameB)
|
|
|
+ .map(JPlagComparison::percent)
|
|
|
+ .orElse(-1f);
|
|
|
}
|
|
|
|
|
|
+ private Optional<JPlagComparison> getSelectedComparison(JPlagResult result, String nameA, String nameB) {
|
|
|
+ return result.getAllComparisons().stream()
|
|
|
+ .filter(comparison ->
|
|
|
+ comparison.firstSubmission.name.equals(nameA) &&
|
|
|
+ comparison.secondSubmission.name.equals(nameB) ||
|
|
|
+ comparison.firstSubmission.name.equals(nameB) &&
|
|
|
+ comparison.secondSubmission.name.equals(nameA))
|
|
|
+ .findFirst();
|
|
|
+ }
|
|
|
}
|