package com.github.marschall.memoryfilesystem; import static com.github.marschall.memoryfilesystem.Constants.SAMPLE_URI; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.lessThan; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; import java.nio.file.FileStore; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.attribute.AclFileAttributeView; import java.nio.file.attribute.BasicFileAttributeView; import java.nio.file.attribute.DosFileAttributeView; import java.nio.file.attribute.FileOwnerAttributeView; import java.nio.file.attribute.PosixFileAttributeView; import java.nio.file.attribute.UserDefinedFileAttributeView; import java.util.Iterator; import org.junit.Rule; import org.junit.Test; public class MemoryFileStoreTest { @Rule public final FileStoreRule rule = new FileStoreRule(); @Test public void onlyOneFileStore() throws IOException { try (FileSystem fileSystem = FileSystems.getFileSystem(SAMPLE_URI)) { Iterator<FileStore> fileStores = fileSystem.getFileStores().iterator(); assertTrue(fileStores.hasNext()); fileStores.next(); try { fileStores.remove(); fail("file store iterator should not support remove"); } catch (UnsupportedOperationException e) { // should reach here } assertFalse(fileStores.hasNext()); } } @Test public void isReadOnly() { assertFalse(this.rule.getFileStore().isReadOnly()); } @Test public void name() { assertEquals("name", this.rule.getFileStore().name()); } @Test public void type() { assertEquals(MemoryFileSystemProvider.SCHEME, this.rule.getFileStore().type()); } @Test public void supportsFileAttributeViewClass() { FileStore fileStore = this.rule.getFileStore(); assertTrue(fileStore.supportsFileAttributeView(BasicFileAttributeView.class)); assertFalse(fileStore.supportsFileAttributeView(PosixFileAttributeView.class)); assertFalse(fileStore.supportsFileAttributeView(DosFileAttributeView.class)); assertFalse(fileStore.supportsFileAttributeView(FileOwnerAttributeView.class)); assertFalse(fileStore.supportsFileAttributeView(UserDefinedFileAttributeView.class)); assertFalse(fileStore.supportsFileAttributeView(AclFileAttributeView.class)); } @Test public void fileSizes() throws IOException { FileStore fileStore = this.rule.getFileStore(); long totalSpace = fileStore.getTotalSpace(); long unallocatedSpace = fileStore.getUnallocatedSpace(); long usableSpace = fileStore.getUsableSpace(); assertThat("total space", totalSpace, greaterThan(0L)); assertThat("unallocated space", unallocatedSpace, greaterThan(0L)); assertThat("usable space", usableSpace, greaterThan(0L)); assertThat("usable space", usableSpace, lessThan(totalSpace)); assertThat("unallocated space", unallocatedSpace, lessThan(totalSpace)); } @Test public void supportsFileAttributeView() { FileStore fileStore = this.rule.getFileStore(); assertTrue(fileStore.supportsFileAttributeView(FileAttributeViews.BASIC)); assertFalse(fileStore.supportsFileAttributeView(FileAttributeViews.POSIX)); assertFalse(fileStore.supportsFileAttributeView(FileAttributeViews.DOS)); assertFalse(fileStore.supportsFileAttributeView(FileAttributeViews.OWNER)); assertFalse(fileStore.supportsFileAttributeView(FileAttributeViews.USER)); assertFalse(fileStore.supportsFileAttributeView(FileAttributeViews.ACL)); } }