1/*
2 * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug 6268673
27 * @summary Test new RuntimePermission.exitVM wildcard syntax
28 * @author Sean Mullan
29 */
30
31import java.security.PermissionCollection;
32
33public class ExitVM {
34
35    public static void main(String[]args) throws Exception {
36
37        RuntimePermission newWildcard = new RuntimePermission("exitVM.*");
38        RuntimePermission oldWildcard = new RuntimePermission("exitVM");
39        RuntimePermission other = new RuntimePermission("exitVM.23");
40        System.out.println("Testing RuntimePermission(\"exitVM.*\")");
41        System.out.println("    testing getName()");
42        if (!newWildcard.getName().equals("exitVM.*")) {
43            throw new Exception
44                ("expected: exitVM.* received:" + newWildcard.getName());
45        }
46        System.out.println
47            ("    testing equals(new RuntimePermission(\"exitVM.*\"))");
48        if (!newWildcard.equals(new RuntimePermission("exitVM.*"))) {
49            throw new Exception("expected true, received false");
50        }
51        System.out.println
52            ("    testing equals(new RuntimePermission(\"exitVM.23\"))");
53        if (newWildcard.equals(other)) {
54            throw new Exception("expected false, received true");
55        }
56        System.out.println
57            ("    testing implies(new RuntimePermission(\"exitVM.23\"))");
58        if (!newWildcard.implies(other)) {
59            throw new Exception("expected true, received false");
60        }
61        System.out.println
62            ("    testing implies(new RuntimePermission(\"exitVM.*\"))");
63        if (!newWildcard.implies(new RuntimePermission("exitVM.*"))) {
64            throw new Exception("expected true, received false");
65        }
66        System.out.println
67            ("    testing implies(new RuntimePermission(\"exitVM\"))");
68        if (!newWildcard.implies(oldWildcard)) {
69            throw new Exception("expected true, received false");
70        }
71        System.out.println("Testing RuntimePermission(\"exitVM\")");
72        System.out.println
73            ("    testing implies(new RuntimePermission(\"exitVM.*\"))");
74        if (!oldWildcard.implies(newWildcard)) {
75            throw new Exception("expected true, received false");
76        }
77        System.out.println
78            ("    testing implies(new RuntimePermission(\"exitVM\"))");
79        if (!oldWildcard.implies(new RuntimePermission("exitVM"))) {
80            throw new Exception("expected true, received false");
81        }
82        System.out.println
83            ("    testing implies(new RuntimePermission(\"exitVM.23\"))");
84        if (!oldWildcard.implies(other)) {
85            throw new Exception("expected true, received false");
86        }
87
88        // now test permission collections
89        System.out.println("Testing PermissionCollection containing " +
90                           "RuntimePermission(\"exitVM.*\")");
91        PermissionCollection newPC = newWildcard.newPermissionCollection();
92        newPC.add(newWildcard);
93        System.out.println
94            ("    testing implies(new RuntimePermission(\"exitVM.23\"))");
95        if (!newPC.implies(other)) {
96            throw new Exception("expected true, received false");
97        }
98        System.out.println
99            ("    testing implies(new RuntimePermission(\"exitVM.*\"))");
100        if (!newPC.implies(new RuntimePermission("exitVM.*"))) {
101            throw new Exception("expected true, received false");
102        }
103        System.out.println
104            ("    testing implies(new RuntimePermission(\"exitVM\"))");
105        if (!newPC.implies(oldWildcard)) {
106            throw new Exception("expected true, received false");
107        }
108        System.out.println("Testing PermissionCollection containing " +
109                           "RuntimePermission(\"exitVM\")");
110        PermissionCollection oldPC = oldWildcard.newPermissionCollection();
111        oldPC.add(oldWildcard);
112        System.out.println
113            ("    testing implies(new RuntimePermission(\"exitVM.23\"))");
114        if (!oldPC.implies(other)) {
115            throw new Exception("expected true, received false");
116        }
117        System.out.println
118            ("    testing implies(new RuntimePermission(\"exitVM.*\"))");
119        if (!oldPC.implies(new RuntimePermission("exitVM.*"))) {
120            throw new Exception("expected true, received false");
121        }
122        System.out.println
123            ("    testing implies(new RuntimePermission(\"exitVM\"))");
124        if (!oldPC.implies(oldWildcard)) {
125            throw new Exception("expected true, received false");
126        }
127    }
128}
129