diff options
Diffstat (limited to 'support/latex-dependency-grapher/source/test/java/LatexHelperTest.java')
-rw-r--r-- | support/latex-dependency-grapher/source/test/java/LatexHelperTest.java | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/support/latex-dependency-grapher/source/test/java/LatexHelperTest.java b/support/latex-dependency-grapher/source/test/java/LatexHelperTest.java new file mode 100644 index 0000000000..13660f525b --- /dev/null +++ b/support/latex-dependency-grapher/source/test/java/LatexHelperTest.java @@ -0,0 +1,176 @@ +import ch.bfh.lpdg.DependencyScanner; +import ch.bfh.lpdg.LatexHelper; +import ch.bfh.lpdg.datastructure.DependencyType; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.Arrays; +import java.util.Collections; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class LatexHelperTest { + + private Path copyFile(File source) throws IOException { + int lastDotIndex = source.getName().lastIndexOf("."); + var extension = (lastDotIndex != -1) ? source.getName().substring(lastDotIndex) : ""; + return Files.copy(Paths.get(source.getAbsolutePath()), Paths.get(source.getPath().replace(extension, ".temp" + extension)), StandardCopyOption.REPLACE_EXISTING); + } + + private void removeFile(Path file) throws IOException { + Files.delete(file); + } + + private Boolean checkForFile(String filePath) { + File file = new File(filePath); + return file.exists() && file.isFile(); + } + + @AfterEach + public void cleanup() throws IOException { + removeFile(Paths.get("src/test/resources/LaTexFolder/file1.temp.cls")); + removeFile(Paths.get("src/test/resources/LaTexFolder/file2.temp.tex")); + removeFile(Paths.get("src/test/resources/LaTexFolder/file3.temp.sty")); + } + + @Test + public void testUnusedPackages() throws IOException { + var path1 = "src/test/resources/LaTexFolder/file1.cls"; + var copy1 = copyFile(new File(path1)); + var path2 = "src/test/resources/LaTexFolder/file2.tex"; + var copy2 = copyFile(new File(path2)); + var path3 = "src/test/resources/LaTexFolder/file3.sty"; + var copy3 = copyFile(new File(path3)); + + + var dep1 = DependencyScanner.getInstance().findDependencies(copy1.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep2 = DependencyScanner.getInstance().findDependencies(copy2.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep3 = DependencyScanner.getInstance().findDependencies(copy3.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + + var helper1 = new LatexHelper(copy1.toFile(), dep1); + var helper2 = new LatexHelper(copy2.toFile(), dep2); + var helper3 = new LatexHelper(copy3.toFile(), dep3); + + helper1.findUnnecessaryDependencies(false, false); + helper2.findUnnecessaryDependencies(false, false); + helper3.findUnnecessaryDependencies(false, false); + + var expectedUnusedDependencies = Arrays.asList("xcolor", "makecell"); + + for (var dep : dep1.getDependencyList()) { + if (expectedUnusedDependencies.contains(dep.getName())) + assertTrue(dep.IsUnused); + else + assertFalse(dep.isIsUnused()); + } + + for (var dep : dep2.getDependencyList()) { + if (expectedUnusedDependencies.contains(dep.getName())) + assertTrue(dep.IsUnused); + else + assertFalse(dep.isIsUnused()); + } + + for (var dep : dep3.getDependencyList()) { + if (expectedUnusedDependencies.contains(dep.getName())) + assertTrue(dep.IsUnused); + else + assertFalse(dep.isIsUnused()); + } + } + + @Test + public void testMinimize() throws IOException { + var path1 = "src/test/resources/LaTexFolder/file1.cls"; + var copy1 = copyFile(new File(path1)); + var path2 = "src/test/resources/LaTexFolder/file2.tex"; + var copy2 = copyFile(new File(path2)); + var path3 = "src/test/resources/LaTexFolder/file3.sty"; + var copy3 = copyFile(new File(path3)); + + var dep1 = DependencyScanner.getInstance().findDependencies(copy1.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep2 = DependencyScanner.getInstance().findDependencies(copy2.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep3 = DependencyScanner.getInstance().findDependencies(copy3.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + + var helper1 = new LatexHelper(copy1.toFile(), dep1); + var helper2 = new LatexHelper(copy2.toFile(), dep2); + var helper3 = new LatexHelper(copy3.toFile(), dep3); + + helper1.findUnnecessaryDependencies(false, true); + helper2.findUnnecessaryDependencies(false, true); + helper3.findUnnecessaryDependencies(false, true); + + assertTrue(checkForFile("src/test/resources/LaTexFolder/file1.temp.minimized.cls")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file2.temp.minimized.tex")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file3.temp.minimized.sty")); + + removeFile(Paths.get("src/test/resources/LaTexFolder/file1.temp.minimized.cls")); + removeFile(Paths.get("src/test/resources/LaTexFolder/file2.temp.minimized.tex")); + removeFile(Paths.get("src/test/resources/LaTexFolder/file3.temp.minimized.sty")); + } + + @Test + public void testOverwrite() throws IOException { + var path1 = "src/test/resources/LaTexFolder/file1.cls"; + var copy1 = copyFile(new File(path1)); + var path2 = "src/test/resources/LaTexFolder/file2.tex"; + var copy2 = copyFile(new File(path2)); + var path3 = "src/test/resources/LaTexFolder/file3.sty"; + var copy3 = copyFile(new File(path3)); + + var dep1 = DependencyScanner.getInstance().findDependencies(copy1.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep2 = DependencyScanner.getInstance().findDependencies(copy2.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep3 = DependencyScanner.getInstance().findDependencies(copy3.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + + var helper1 = new LatexHelper(copy1.toFile(), dep1); + var helper2 = new LatexHelper(copy2.toFile(), dep2); + var helper3 = new LatexHelper(copy3.toFile(), dep3); + + helper1.findUnnecessaryDependencies(true, false); + helper2.findUnnecessaryDependencies(true, false); + helper3.findUnnecessaryDependencies(true, false); + + assertFalse(checkForFile("src/test/resources/LaTexFolder/file1.temp.minimized.cls")); + assertFalse(checkForFile("src/test/resources/LaTexFolder/file2.temp.minimized.tex")); + assertFalse(checkForFile("src/test/resources/LaTexFolder/file3.temp.minimized.sty")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file1.temp.cls")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file2.temp.tex")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file3.temp.sty")); + } + + @Test + public void testMinimizeAndOverwrite() throws IOException { + var path1 = "src/test/resources/LaTexFolder/file1.cls"; + var copy1 = copyFile(new File(path1)); + var path2 = "src/test/resources/LaTexFolder/file2.tex"; + var copy2 = copyFile(new File(path2)); + var path3 = "src/test/resources/LaTexFolder/file3.sty"; + var copy3 = copyFile(new File(path3)); + + var dep1 = DependencyScanner.getInstance().findDependencies(copy1.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep2 = DependencyScanner.getInstance().findDependencies(copy2.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + var dep3 = DependencyScanner.getInstance().findDependencies(copy3.toAbsolutePath().toString(), DependencyType.FILE, "", Collections.emptyList(), 5); + + var helper1 = new LatexHelper(copy1.toFile(), dep1); + var helper2 = new LatexHelper(copy2.toFile(), dep2); + var helper3 = new LatexHelper(copy3.toFile(), dep3); + + helper1.findUnnecessaryDependencies(true, true); + helper2.findUnnecessaryDependencies(true, true); + helper3.findUnnecessaryDependencies(true, true); + + assertFalse(checkForFile("src/test/resources/LaTexFolder/file1.temp.minimized.cls")); + assertFalse(checkForFile("src/test/resources/LaTexFolder/file2.temp.minimized.tex")); + assertFalse(checkForFile("src/test/resources/LaTexFolder/file3.temp.minimized.sty")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file1.temp.cls")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file2.temp.tex")); + assertTrue(checkForFile("src/test/resources/LaTexFolder/file3.temp.sty")); + } +} |