BaseCodeTest.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package de.jplag;
  2. import static org.junit.jupiter.api.Assertions.assertEquals;
  3. import static org.junit.jupiter.api.Assertions.assertThrows;
  4. import java.io.File;
  5. import java.util.Set;
  6. import org.junit.jupiter.api.Test;
  7. import de.jplag.exceptions.BasecodeException;
  8. import de.jplag.exceptions.ExitException;
  9. import de.jplag.exceptions.RootDirectoryException;
  10. public class BaseCodeTest extends TestBase {
  11. @Test
  12. void testBasecodeUserSubmissionComparison() throws ExitException {
  13. JPlagResult result = runJPlag("basecode", it -> it.withBaseCodeSubmissionName("base"));
  14. verifyResults(result);
  15. }
  16. @Test
  17. void testTinyBasecode() {
  18. assertThrows(BasecodeException.class, () -> runJPlag("TinyBasecode", it -> it.withBaseCodeSubmissionName("base")));
  19. }
  20. @Test
  21. void testEmptySubmission() throws ExitException {
  22. JPlagResult result = runJPlag("emptysubmission", it -> it.withBaseCodeSubmissionName("base"));
  23. verifyResults(result);
  24. }
  25. @Test
  26. void testAutoTrimFileSeparators() throws ExitException {
  27. JPlagResult result = runJPlag("basecode", it -> it.withBaseCodeSubmissionName(File.separator + "base" + File.separator));
  28. verifyResults(result);
  29. }
  30. private void verifyResults(JPlagResult result) {
  31. assertEquals(2, result.getNumberOfSubmissions());
  32. assertEquals(1, result.getAllComparisons().size());
  33. assertEquals(1, result.getAllComparisons().get(0).matches().size());
  34. assertEquals(1, result.getSimilarityDistribution()[1]);
  35. assertEquals(0.85, result.getAllComparisons().get(0).similarity(), DELTA);
  36. }
  37. @Test
  38. void testBasecodePathComparison() throws ExitException {
  39. JPlagResult result = runJPlag("basecode", it -> it.withBaseCodeSubmissionName(getBasePath("basecode-base")));
  40. assertEquals(3, result.getNumberOfSubmissions()); // "basecode/base" is now a user submission.
  41. }
  42. @Test
  43. void testInvalidRoot() {
  44. assertThrows(RootDirectoryException.class, () -> runJPlag("basecode", it -> it.withSubmissionDirectories(Set.of(new File("WrongRoot")))));
  45. }
  46. @Test
  47. void testInvalidBasecode() {
  48. assertThrows(BasecodeException.class, () -> runJPlag("basecode", it -> it.withBaseCodeSubmissionName("WrongBasecode")));
  49. }
  50. @Test
  51. void testBasecodeUserSubmissionWithDots() {
  52. assertThrows(BasecodeException.class, () -> runJPlag("basecode", it -> it.withBaseCodeSubmissionName("base.ext")));
  53. }
  54. }