package ucar.nc2.util; import org.junit.*; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; /** * @author cwardgar * @since 2015/06/23 */ public class DiskCache2Test { private static Path nearest; @BeforeClass public static void beforeClass() throws IOException { nearest = Files.createTempDirectory("nearest"); } @AfterClass public static void afterClass() throws IOException { Files.delete(nearest); } @Test public void canWriteDir() { File file = nearest.toFile(); Assert.assertTrue(file.exists()); Assert.assertTrue(DiskCache2.canWrite(file)); } // On Windows, can't make a directory read-only: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6728842 // So, we can't have this test: // @Test public void cantWriteDir() { } @Test public void canWriteFile() throws IOException { File file = Files.createTempFile(nearest, "temp", null).toFile(); try { Assert.assertTrue(file.exists()); Assert.assertTrue(DiskCache2.canWrite(file)); } finally { file.delete(); } } @Test public void cantWriteFile() throws IOException { File file = Files.createTempFile(nearest, "temp", null).toFile(); try { Assert.assertTrue(file.exists()); Assert.assertTrue(file.setWritable(false)); Assert.assertFalse(DiskCache2.canWrite(file)); } finally { file.delete(); } } @Test public void canWriteNonExistentFileWithExistentParent() { File file = Paths.get(nearest.toString(), "non-existent-file.txt").toFile(); Assert.assertFalse(file.exists()); Assert.assertTrue(DiskCache2.canWrite(file)); } @Test public void cantWriteNonExistentFileWithNonExistentParent() { File file = Paths.get(nearest.toString(), "A", "B", "C", "non-existent-file.txt").toFile(); Assert.assertFalse(file.exists()); Assert.assertFalse(file.getParentFile().exists()); Assert.assertFalse(DiskCache2.canWrite(file)); } }