Browse Source

Add test case for basecode fallback bug when using submission subdirectories.

Jan Wittler 4 years ago
parent
commit
830bf6692c

+ 27 - 0
core/src/test/java/de/jplag/BaseCodeTest.java

@@ -65,4 +65,31 @@ public class BaseCodeTest extends TestBase {
     void testBasecodeUserSubmissionWithDots() {
         assertThrows(IllegalArgumentException.class, () -> runJPlag("basecode", it -> it.withBaseCodeSubmissionName("base.ext")));
     }
+
+    /**
+     * The simple duplicate contains obvious plagiarism.
+     */
+    @Test
+    void testSubdirectoryGlobalBasecode() throws ExitException {
+        String basecode = getBasePath("SubdirectoryBase");
+        JPlagResult result = runJPlag("SubdirectoryDuplicate", it -> it.withSubdirectoryName("src").withBaseCodeSubmissionName(basecode));
+        verifySimpleDuplicate(result, 3, 3);
+    }
+
+    /**
+     * The simple duplicate contains obvious plagiarism.
+     */
+    @Test
+    void testSubdirectoryLocalBasecode() throws ExitException {
+        JPlagResult result = runJPlag("SubdirectoryDuplicate", it -> it.withSubdirectoryName("src").withBaseCodeSubmissionName("Base"));
+        verifySimpleDuplicate(result, 2, 1);
+    }
+
+    private void verifySimpleDuplicate(JPlagResult result, int submissions, int comparisons) {
+        assertEquals(submissions, result.getNumberOfSubmissions());
+        assertEquals(comparisons, result.getAllComparisons().size());
+        assertEquals(1, result.getAllComparisons().get(0).matches().size());
+        assertEquals(1, result.getSimilarityDistribution()[3]);
+        assertEquals(62.07, result.getAllComparisons().get(0).similarity(), DELTA);
+    }
 }

+ 7 - 0
core/src/test/resources/de/jplag/samples/SubdirectoryBase/src/SimpleDuplicate.java

@@ -0,0 +1,7 @@
+public class SimpleDuplicate {
+
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
+    }
+
+}

+ 11 - 0
core/src/test/resources/de/jplag/samples/SubdirectoryDuplicate/A/src/SimpleDuplicate.java

@@ -0,0 +1,11 @@
+public class SimpleDuplicate {
+
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
+
+        for(int i = 0; i < 10; i++) {
+            System.out.println("Number is " + i);
+        }
+    }
+
+}

+ 12 - 0
core/src/test/resources/de/jplag/samples/SubdirectoryDuplicate/B/src/SimpleDuplicate.java

@@ -0,0 +1,12 @@
+public class SimpleDuplicate {
+
+    public static void main(String[] args) {
+        System.out.println("Hello Plagiarism!");
+
+        int max = 10;
+        for(int j = 0; j < max; j++) {
+            System.out.println("Number is " + j);
+        }
+    }
+
+}

+ 7 - 0
core/src/test/resources/de/jplag/samples/SubdirectoryDuplicate/Base/src/SimpleDuplicate.java

@@ -0,0 +1,7 @@
+public class SimpleDuplicate {
+
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
+    }
+
+}