diff -r 9b67dd88a931 -r 71fef5fae9cc test/jdk/java/net/SocketPermission/Ctor.java --- a/test/jdk/java/net/SocketPermission/Ctor.java Mon Oct 14 18:48:10 2019 -0700 +++ b/test/jdk/java/net/SocketPermission/Ctor.java Wed Oct 16 14:32:17 2019 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,19 +23,64 @@ /* * @test - * @bug 4391898 + * @bug 4391898 8230407 * @summary SocketPermission(":",...) throws ArrayIndexOutOfBoundsException + * SocketPermission constructor argument checks + * @run testng Ctor */ -import java.net.*; +import java.net.SocketPermission; +import org.testng.annotations.Test; +import static java.lang.System.out; +import static org.testng.Assert.*; public class Ctor { - public static void main(String[] args) { - try { - SocketPermission sp = new java.net.SocketPermission(":", "connect"); - } catch (java.lang.ArrayIndexOutOfBoundsException e) { - throw new RuntimeException(e); - } - System.out.println("Test passed!!!"); + + static final Class NPE = NullPointerException.class; + static final Class IAE = IllegalArgumentException.class; + + @Test + public void positive() { + // ArrayIndexOutOfBoundsException is the bug, 4391898, exists + SocketPermission sp1 = new SocketPermission(":", "connect"); + } + + @Test + public void npe() { + NullPointerException e; + e = expectThrows(NPE, () -> new SocketPermission(null, null)); + out.println("caught expected NPE: " + e); + e = expectThrows(NPE, () -> new SocketPermission("foo", null)); + out.println("caught expected NPE: " + e); + e = expectThrows(NPE, () -> new SocketPermission(null, "connect")); + out.println("caught expected NPE: " + e); + } + + @Test + public void iae() { + IllegalArgumentException e; + // host + e = expectThrows(IAE, () -> new SocketPermission("1:2:3:4", "connect")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo:5-4", "connect")); + out.println("caught expected IAE: " + e); + + // actions + e = expectThrows(IAE, () -> new SocketPermission("foo", "")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo", "badAction")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo", "badAction,connect")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo", "badAction,,connect")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo", ",connect")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo", ",,connect")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo", "connect,")); + out.println("caught expected IAE: " + e); + e = expectThrows(IAE, () -> new SocketPermission("foo", "connect,,")); + out.println("caught expected IAE: " + e); } }