package com.twasyl.slideshowfx.utils; import com.twasyl.slideshowfx.utils.io.DeleteFileVisitor; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.logging.Logger; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import static org.junit.Assert.*; public class ZipUtilsTest { private static final Logger LOGGER = Logger.getLogger(ZipUtilsTest.class.getName()); private static File testResultsDir; private static File resourcesDir; @BeforeClass public static void beforeClass() { testResultsDir = new File(System.getProperty("testResultsDir", "build")); resourcesDir = new File("src/test/resources/com/twasyl/slideshowfx/utils/zip/test.txt").getParentFile(); assertTrue(resourcesDir.exists()); } @Test public void zip() throws IOException { final File zip = new File(testResultsDir, "zipped.zip"); ZipUtils.zip(resourcesDir, zip); // Verify all content of the zip try(final FileInputStream fileInput = new FileInputStream(zip); final ZipInputStream input = new ZipInputStream(fileInput)) { final int expectedNumberOfEntries = 5; int numberOfEntries = 0; ZipEntry entry; while((entry = input.getNextEntry()) != null) { numberOfEntries++; switch(entry.getName()) { case "dir/otherDir/otherDirTest.html": assertFalse("otherDirTest.html is a directory", entry.isDirectory()); break; case "dir/dirTest.txt": assertFalse("dirTest.txt is a directory", entry.isDirectory()); break; case "archive.zip": assertFalse("archive.zip is a directory", entry.isDirectory()); break; case "test.html": assertFalse("test.html is a directory", entry.isDirectory()); break; case "test.txt": assertFalse("test.txt is a directory", entry.isDirectory()); break; default: fail("Unknown entry name: [" + entry.getName() + "]"); } } assertEquals(expectedNumberOfEntries, numberOfEntries); } zip.delete(); } @Test public void unzip() throws IOException { final File zip = new File(resourcesDir, "archive.zip"); final File unzippedFolder = new File(testResultsDir, "unzipped").toPath().toAbsolutePath().toFile(); if(!unzippedFolder.exists()) unzippedFolder.mkdir(); ZipUtils.unzip(zip, unzippedFolder); File unzippedFile = Paths.get(unzippedFolder.getAbsolutePath(), "dir").toFile(); assertTrue(unzippedFile.exists()); assertTrue(unzippedFile.isDirectory()); unzippedFile = Paths.get(unzippedFolder.getAbsolutePath(), "dir", "otherDir").toFile(); assertTrue(unzippedFile.exists()); assertTrue(unzippedFile.isDirectory()); unzippedFile = Paths.get(unzippedFolder.getAbsolutePath(), "dir", "otherDir", "otherDirTest.html").toFile(); assertTrue(unzippedFile.exists()); assertTrue(unzippedFile.isFile()); unzippedFile = Paths.get(unzippedFolder.getAbsolutePath(), "dir", "dirTest.txt").toFile(); assertTrue(unzippedFile.exists()); assertTrue(unzippedFile.isFile()); unzippedFile = Paths.get(unzippedFolder.getAbsolutePath(), "test.html").toFile(); assertTrue(unzippedFile.exists()); assertTrue(unzippedFile.isFile()); unzippedFile = Paths.get(unzippedFolder.getAbsolutePath(), "test.txt").toFile(); assertTrue(unzippedFile.exists()); assertTrue(unzippedFile.isFile()); Files.walkFileTree(unzippedFolder.toPath(), new DeleteFileVisitor()); } }