1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.lang; 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLClassLoader; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.resource.Support_Resources; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class PackageTest extends junit.framework.TestCase { 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private File resources; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String resPath; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package getTestPackage(String resourceJar, String className) 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Exception { 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Resources.copyFile(resources, "Package", resourceJar); 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL resourceURL = new URL("file:/" + resPath + "/Package/" 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + resourceJar); 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLClassLoader ucl = new URLClassLoader(new URL[] { resourceURL }, null); 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return Class.forName(className, true, ucl).getPackage(); 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() { 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resources = Support_Resources.createTempFolder(); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resPath = resources.toString(); 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (resPath.charAt(0) == '/' || resPath.charAt(0) == '\\') 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resPath = resPath.substring(1); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There is a newer version of this class with some actual tests but since 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the class is not implemented they all fail. For now use the stub test 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * methods. 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getImplementationVendor() 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getImplementationVersion() 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getSpecificationTitle() 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getSpecificationVendor() 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getSpecificationVersion() 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getImplementationTitle() 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_helper_Attributes() throws Exception { 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p = getTestPackage("hyts_all_attributes.jar", "p.C"); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationTitle returns a wrong string (1)", 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Implementation-Title", p.getImplementationTitle()); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVendor returns a wrong string (1)", 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Implementation-Vendor", p.getImplementationVendor()); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVersion returns a wrong string (1)", 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "2.2.2", p.getImplementationVersion()); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationTitle returns a wrong string (1)", 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Specification-Title", p.getSpecificationTitle()); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVendor returns a wrong string (1)", 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Specification-Vendor", p.getSpecificationVendor()); 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVersion returns a wrong string (1)", 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "2.2.2", p.getSpecificationVersion()); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // No entry for the package 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p2 = getTestPackage("hyts_no_entry.jar", "p.C"); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationTitle returns a wrong string (2)", 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Implementation-Title", p2.getImplementationTitle()); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVendor returns a wrong string (2)", 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Implementation-Vendor", p2.getImplementationVendor()); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVersion returns a wrong string (2)", 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "5.3.b1", p2.getImplementationVersion()); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationTitle returns a wrong string (2)", 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Specification-Title", p2.getSpecificationTitle()); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVendor returns a wrong string (2)", 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Specification-Vendor", p2.getSpecificationVendor()); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVersion returns a wrong string (2)", 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "1.2.3", p2.getSpecificationVersion()); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // No attributes in the package entry 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p3 = getTestPackage("hyts_no_attributes.jar", "p.C"); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationTitle returns a wrong string (3)", 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Implementation-Title", p3.getImplementationTitle()); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVendor returns a wrong string (3)", 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Implementation-Vendor", p3.getImplementationVendor()); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVersion returns a wrong string (3)", 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "5.3.b1", p3.getImplementationVersion()); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationTitle returns a wrong string (3)", 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Specification-Title", p3.getSpecificationTitle()); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVendor returns a wrong string (3)", 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Specification-Vendor", p3.getSpecificationVendor()); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVersion returns a wrong string (3)", 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "1.2.3", p3.getSpecificationVersion()); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Some attributes in the package entry 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p4 = getTestPackage("hyts_some_attributes.jar", "p.C"); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationTitle returns a wrong string (4)", 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Implementation-Title", p4.getImplementationTitle()); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVendor returns a wrong string (4)", 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Implementation-Vendor", p4.getImplementationVendor()); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVersion returns a wrong string (4)", 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "2.2.2", p4.getImplementationVersion()); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationTitle returns a wrong string (4)", 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MF Specification-Title", p4.getSpecificationTitle()); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVendor returns a wrong string (4)", 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Specification-Vendor", p4.getSpecificationVendor()); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVersion returns a wrong string (4)", 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "2.2.2", p4.getSpecificationVersion()); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // subdirectory Package 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p5 = getTestPackage("hyts_pq.jar", "p.q.C"); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationTitle returns a wrong string (5)", 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Implementation-Title", p5.getImplementationTitle()); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVendor returns a wrong string (5)", 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Implementation-Vendor", p5.getImplementationVendor()); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getImplementationVersion returns a wrong string (5)", 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "1.1.3", p5.getImplementationVersion()); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationTitle returns a wrong string (5)", 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Specification-Title", p5.getSpecificationTitle()); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVendor returns a wrong string (5)", 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p Specification-Vendor", p5.getSpecificationVendor()); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Package getSpecificationVersion returns a wrong string (5)", 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "2.2.0.0.0.0.0.0.0.0.0", p5.getSpecificationVersion()); 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getName() 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getName() throws Exception { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p = getTestPackage("hyts_pq.jar", "p.q.C"); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Package getName returns a wrong string", "p.q", p 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getName()); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getPackage(java.lang.String) 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getPackageLjava_lang_String() { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame("Package getPackage failed for java.lang", Package 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPackage("java.lang"), Package.getPackage("java.lang")); 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame("Package getPackage failed for java.lang", Package 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPackage("java.lang"), Object.class.getPackage()); 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#getPackages() 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getPackages() throws Exception { 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package[] pckgs = Package.getPackages(); 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean found = false; 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < pckgs.length; i++) { 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (pckgs[i].getName().equals("java.util")) { 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found = true; 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Package getPackages failed to retrieve a package", found); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#hashCode() 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hashCode() { 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p1 = Package.getPackage("java.lang"); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (p1 != null) { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(p1.hashCode(), "java.lang".hashCode()); 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#isCompatibleWith(java.lang.String) 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isCompatibleWithLjava_lang_String() throws Exception { 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p = getTestPackage("hyts_c.jar", "p.C"); 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Package isCompatibleWith fails with lower version", p 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .isCompatibleWith("2.1.9.9")); 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Package isCompatibleWith fails with same version (1)", p 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .isCompatibleWith("2.2.0")); 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Package isCompatibleWith fails with same version (2)", p 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .isCompatibleWith("2.2")); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Package isCompatibleWith fails with higher version", p 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .isCompatibleWith("2.2.0.0.1")); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p.isCompatibleWith(null); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Null version is illegal"); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException ok) { 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException compatible) { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * RI throws NPE instead of NFE... 237a0696ae076ed7ea66387057c7a1b34d42e10f140Elliott Hughes */ 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p.isCompatibleWith(""); 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Empty version is illegal"); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException ok) {} 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p.isCompatibleWith("."); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("'.' version is illegal"); 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException ok) {} 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p.isCompatibleWith("1.2."); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("'1.2.' version is illegal"); 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException ok) {} 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p.isCompatibleWith(".9"); 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("'.9' version is illegal"); 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException ok) {} 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p.isCompatibleWith("2.4..5"); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("'2.4..5' version is illegal"); 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException ok) {} 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p.isCompatibleWith("20.-4"); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("'20.-4' version is illegal"); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException ok) {} 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#isSealed() 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isSealed() throws Exception { 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p = getTestPackage("hyts_pq.jar", "p.q.C"); 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Package isSealed returns wrong boolean", p.isSealed()); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#isSealed(java.net.URL) 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isSealedLjava_net_URL() throws Exception { 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p = getTestPackage("hyts_c.jar", "p.C"); 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Package isSealed returns wrong boolean (1)", p 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .isSealed(new URL("file:/" + resPath + "/"))); 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Package isSealed returns wrong boolean (2)", p 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .isSealed(new URL("file:/" + resPath + "/Package/hyts_c.jar"))); 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Package#toString() 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() throws Exception { 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Package p = getTestPackage("hyts_c.jar", "p.C"); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Package toString returns wrong string", p.toString() 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .length() > 0); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 293a0696ae076ed7ea66387057c7a1b34d42e10f140Elliott Hughes 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SealedPackage_forName() throws Exception { 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Resources.copyFile(resources, "Package", "hyts_c.jar"); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Resources.copyFile(resources, "Package", "hyts_d.jar"); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Resources.copyFile(resources, "Package", "hyts_d1.jar"); 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Resources.copyFile(resources, "Package", "hyts_d2.jar"); 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL resourceURL1 = new URL("file:/" + resPath + "/Package/hyts_c.jar"); 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL resourceURL2 = new URL("file:/" + resPath + "/Package/hyts_d.jar"); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL resourceURL3 = new URL("file:/" + resPath + "/Package/hyts_d1.jar"); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL resourceURL4 = new URL("file:/" + resPath + "/Package/hyts_d2.jar"); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL resourceURL5 = new URL("file:/" + resPath + "/"); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLClassLoader uclClassLoader; 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load from the sealed jar, then an unsealed jar with no manifest 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uclClassLoader = new java.net.URLClassLoader(new URL[] { resourceURL1, 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resourceURL2 }, null); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.C", true, uclClassLoader); 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.D", true, uclClassLoader); 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw SecurityException"); 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // setup for next test 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Resources.copyFile(resources, "p", ""); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream in = uclClassLoader.getResourceAsStream("p/D.class"); 321a0696ae076ed7ea66387057c7a1b34d42e10f140Elliott Hughes Support_Resources.copyLocalFileTo(new File(resources.toString(), 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "p/D.class"), in); 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load from a sealed jar, then the directory 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uclClassLoader = new java.net.URLClassLoader(new URL[] { resourceURL1, 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resourceURL5 }, null); 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.C", true, uclClassLoader); 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.D", true, uclClassLoader); 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw SecurityException"); 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load from a directory, then the sealed jar 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uclClassLoader = new java.net.URLClassLoader(new URL[] { resourceURL1, 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resourceURL5 }, null); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.D", true, uclClassLoader); 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.C", true, uclClassLoader); 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw SecurityException"); 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load from an unsealed jar with no manifest, then the sealed jar 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uclClassLoader = new java.net.URLClassLoader(new URL[] { resourceURL1, 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resourceURL2 }, null); 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.D", true, uclClassLoader); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.C", true, uclClassLoader); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw SecurityException"); 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load from an unsealed jar with a manifest, then the sealed jar 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uclClassLoader = new java.net.URLClassLoader(new URL[] { resourceURL1, 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resourceURL3 }, null); 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.C", true, uclClassLoader); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.D", true, uclClassLoader); 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw SecurityException"); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load from an sealed jar, then the unsealed jar with a manifest 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uclClassLoader = new java.net.URLClassLoader(new URL[] { resourceURL1, 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resourceURL3 }, null); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.D", true, uclClassLoader); 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.C", true, uclClassLoader); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw SecurityException"); 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load from the sealed jar, then another sealed jar 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uclClassLoader = new java.net.URLClassLoader(new URL[] { resourceURL1, 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resourceURL4 }, null); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.C", true, uclClassLoader); 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class.forName("p.D", true, uclClassLoader); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw SecurityException"); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 391