} catch (IllegalArgumentException ex) {
// expected exception
}
// test SystemPermission with legal name argument
final Permission sp0 = new SystemPermission(SystemPermission.SHUTDOWN);
final Permission sp1 = new SystemPermission(SystemPermission.SHUTDOWN);
// test SystemPermission.getName()
assertEquals(sp0.getName(), SystemPermission.SHUTDOWN);
// test SystemPermission.getActions()
assertEquals(sp0.getActions(), "");
// test SystemPermission.hashCode()
assertTrue(sp0.hashCode() == sp1.hashCode());
// test SystemPermission.equals()
assertTrue(sp0.equals(sp1));
assertTrue(!sp0.equals(null));
assertTrue(!sp0.equals(new Object()));
// test SystemPermission.implies()
assertTrue(sp0.implies(sp1));
assertTrue(sp1.implies(sp0));
// test SystemPermission for authorized user against policy file
final DatabasePrincipal authorizedUser
= new DatabasePrincipal("authorizedSystemUser");
execute(authorizedUser, new ShutdownEngineAction(sp0), true);