corda/sgx-jvm/avian/test/Files.java
Andras Slemmer 9bb3d6b972 Add 'sgx-jvm/avian/' from commit '09e4fe60d01f4f4bfb6b2976973bb4913ef61edc'
git-subtree-dir: sgx-jvm/avian
git-subtree-mainline: f978eab8d1
git-subtree-split: 09e4fe60d0
2017-03-13 12:18:24 +00:00

101 lines
2.6 KiB
Java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Files {
private static final boolean IsWindows
= System.getProperty("os.name").equals("Windows");
private static void expect(boolean v) {
if (! v) throw new RuntimeException();
}
private static void isAbsoluteTest(boolean absolutePath) {
File file = new File("test.txt");
if (absolutePath) {
file = file.getAbsoluteFile();
}
boolean isAbsolute = file.isAbsolute();
if (absolutePath) {
expect(isAbsolute);
} else {
expect(!isAbsolute);
}
}
private static void setExecutableTestWithPermissions(boolean executable)
throws Exception
{
File file = File.createTempFile("avian.", null);
try {
file.setExecutable(executable);
if (executable) {
expect(file.canExecute());
} else {
// Commented out because this will fail on Windows - both on Avian and on OpenJDK
// The implementation for Windows considers canExecute() to be the same as canRead()
// expect(!file.canExecute());
}
} finally {
expect(file.delete());
}
}
public static void main(String[] args) throws Exception {
isAbsoluteTest(true);
isAbsoluteTest(false);
setExecutableTestWithPermissions(true);
setExecutableTestWithPermissions(false);
{ File f = new File("test.txt");
f.createNewFile();
expect(! f.createNewFile());
f.delete();
}
{ File f = new File("test.txt");
FileOutputStream out = new FileOutputStream(f);
try {
byte[] message = "hello, world!\n".getBytes();
out.write(message);
out.close();
expect(f.lastModified() > 0);
FileInputStream in = new FileInputStream(f);
try {
expect(in.available() == message.length);
for (int i = 0; i < message.length; ++i) {
in.read();
expect(in.available() == message.length - i - 1);
}
expect(in.read() == -1);
expect(in.available() == 0);
} finally {
in.close();
}
} finally {
f.delete();
}
}
if(IsWindows) {
expect(new File("/c:\\test").getPath().equals("c:\\test"));
} else {
expect(new File("/c:\\test").getPath().equals("/c:\\test"));
}
expect(new File("foo/bar").getParent().equals("foo"));
expect(new File("foo/bar/").getParent().equals("foo"));
expect(new File("foo/bar//").getParent().equals("foo"));
expect(new File("foo/nonexistent-directory").listFiles() == null);
}
}