// (The following used to use the bogus action "nothing" ... but
// the JDK 1.4.2 javadoc makes it clear that only actions "read",
// "write", "execute" and "delete" are recognized. And the JDK
// 1.4.2 implementation throws IllegalArgumentException for an
// unrecognized action.)
p.add(new FilePermission("/tmp/p", "read"));
p.add(new FilePermission("/tmp/p", "read"));
// Classpath didn't handle dirs without a file separator correctly
FilePermission fp1 = new FilePermission("/tmp", "read");
harness.check(fp1.implies(fp1));
// Test the constructor's checking of its arguments.
harness.checkPoint("constructor file arg checking");
try {
harness.check(new FilePermission(null, "read") == null);
}
catch (java.lang.NullPointerException ex) {
harness.check(true);
}
harness.checkPoint("constructor action checking (simple)");
harness.check(new FilePermission("/tmp/p", "read") != null);
harness.check(new FilePermission("/tmp/p", "write") != null);
harness.check(new FilePermission("/tmp/p", "execute") != null);
harness.check(new FilePermission("/tmp/p", "delete") != null);
harness.checkPoint("constructor action checking (lists)");
harness.check(new FilePermission("/tmp/p", "read,delete") != null);
harness.check(new FilePermission("/tmp/p", "read,read") != null);
harness.check(new FilePermission("/tmp/p", "read,read,read") != null);
harness.checkPoint("constructor action checking (case)");
harness.check(new FilePermission("/tmp/p", "Read,DELETE") != null);
harness.check(new FilePermission("/tmp/p", "rEAD") != null);
harness.checkPoint("constructor action checking(underspecified)");
harness.check(new FilePermission("/tmp/p", " read ") != null);
harness.check(new FilePermission("/tmp/p", "read, read") != null);
harness.check(new FilePermission("/tmp/p", "read ,read") != null);
harness.checkPoint("constructor action checking(bad actions)");
try {
harness.check(new FilePermission("/tmp/p", null) == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", "") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", " ") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", "foo") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", "nothing") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
harness.checkPoint("constructor action checking(bad action lists)");
try {
harness.check(new FilePermission("/tmp/p", ",") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", "read,") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", "read,,read") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
harness.checkPoint("constructor action checking(wierd stuff)");
try {
harness.check(new FilePermission("/tmp/p", "read read") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", "read\nread") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
try {
harness.check(new FilePermission("/tmp/p", "read;read") == null);
}
catch (java.lang.IllegalArgumentException ex) {
harness.check(true);
}
harness.checkPoint("implies() action checking");
for (int i = 1; i < 1 << actions.length; i++) {
for (int j = 1; j < 1 << actions.length; j++) {
FilePermission pi = new FilePermission("/tmp/p", makeActions(i));
FilePermission pj = new FilePermission("/tmp/p", makeActions(j));
harness.check(pi.implies(pj) == ((i & j) == j));
}
}
}