You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2007/01/31 12:39:44 UTC

svn commit: r501814 - in /harmony/enhanced: classlib/trunk/modules/luni/make/ classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/ drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/

Author: varlax
Date: Wed Jan 31 03:39:43 2007
New Revision: 501814

URL: http://svn.apache.org/viewvc?view=rev&rev=501814
Log:
HARMONY-2470: [classlib] PackageTest and [drlvm] Package.isCompatible() fixed

Modified:
    harmony/enhanced/classlib/trunk/modules/luni/make/exclude.linux.x86.ibm
    harmony/enhanced/classlib/trunk/modules/luni/make/exclude.windows.x86.ibm
    harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/PackageTest.java
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/make/exclude.linux.x86.ibm
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/make/exclude.linux.x86.ibm?view=diff&rev=501814&r1=501813&r2=501814
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/make/exclude.linux.x86.ibm (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/make/exclude.linux.x86.ibm Wed Jan 31 03:39:43 2007
@@ -1,3 +1,4 @@
 org/apache/harmony/tests/internal/net/www/protocol/http/HttpURLConnectionTest.java
 tests/api/java/net/SocketTest.java
-org/apache/harmony/luni/tests/java/lang/SecurityManager2Test.java
\ No newline at end of file
+org/apache/harmony/luni/tests/java/lang/SecurityManager2Test.java
+org/apache/harmony/luni/tests/java/lang/PackageTest.java
\ No newline at end of file

Modified: harmony/enhanced/classlib/trunk/modules/luni/make/exclude.windows.x86.ibm
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/make/exclude.windows.x86.ibm?view=diff&rev=501814&r1=501813&r2=501814
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/make/exclude.windows.x86.ibm (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/make/exclude.windows.x86.ibm Wed Jan 31 03:39:43 2007
@@ -1 +1,2 @@
-org/apache/harmony/luni/tests/java/lang/SecurityManager2Test.java
\ No newline at end of file
+org/apache/harmony/luni/tests/java/lang/SecurityManager2Test.java
+org/apache/harmony/luni/tests/java/lang/PackageTest.java
\ No newline at end of file

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/PackageTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/PackageTest.java?view=diff&rev=501814&r1=501813&r2=501814
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/PackageTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/PackageTest.java Wed Jan 31 03:39:43 2007
@@ -19,399 +19,265 @@
 import java.io.File;
 import java.lang.reflect.Method;
 import java.net.URL;
+import java.net.URLClassLoader;
 
 import tests.support.resource.Support_Resources;
 
 public class PackageTest extends junit.framework.TestCase {
 
-	private File resources;
+    private File resources;
 
-	private String resPath;
+    private String resPath;
 
-	/**
-	 * There is a newer version of this class with some actual tests but since
-	 * the class is not implemented they all fail. For now use the stub test
-	 * methods.
-	 */
-
-	/**
-	 * @tests java.lang.Package#getImplementationVendor()
-	 * @tests java.lang.Package#getImplementationVersion()
-	 * @tests java.lang.Package#getSpecificationTitle()
-	 * @tests java.lang.Package#getSpecificationVendor()
-	 * @tests java.lang.Package#getSpecificationVersion()
-	 * @tests java.lang.Package#getImplementationTitle()
-	 */
-	public void test_helper_Attributes() {
-
-		// All attributes in the package entry
-		java.net.URL[] urls = new java.net.URL[1];
-		Class<?> c = null;
-		java.net.URLClassLoader ucl = null;
-		Support_Resources.copyFile(resources, "Package",
-				"hyts_all_attributes.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_all_attributes.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.C", true, ucl);
-			assertEquals("Package getImplementationTitle returns a wrong string (1)",
-					
-							"p Implementation-Title", c.getPackage().getImplementationTitle());
-			assertEquals("Package getImplementationVendor returns a wrong string (1)",
-					
-							"p Implementation-Vendor", c.getPackage().getImplementationVendor());
-			assertEquals("Package getImplementationVersion returns a wrong string (1)",
-					"2.2.2", c.getPackage().getImplementationVersion());
-			assertEquals("Package getSpecificationTitle returns a wrong string (1)",
-					
-							"p Specification-Title", c.getPackage().getSpecificationTitle());
-			assertEquals("Package getSpecificationVendor returns a wrong string (1)",
-					
-							"p Specification-Vendor", c.getPackage().getSpecificationVendor());
-			assertEquals("Package getSpecificationVersion returns a wrong string (1)",
-					"2.2.2", c.getPackage().getSpecificationVersion());
-		} catch (Exception e) {
-			fail("Exception during helperAttributes test : " + e.getMessage());
-		}
-
-		// No entry for the package
-		Support_Resources.copyFile(resources, "Package", "hyts_no_entry.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_no_entry.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.C", true, ucl);
-			assertEquals("Package getImplementationTitle returns a wrong string (2)",
-					
-							"MF Implementation-Title", c.getPackage().getImplementationTitle());
-			assertEquals("Package getImplementationVendor returns a wrong string (2)",
-					
-							"MF Implementation-Vendor", c.getPackage().getImplementationVendor());
-			assertEquals("Package getImplementationVersion returns a wrong string (2)",
-					"5.3.b1", c.getPackage().getImplementationVersion());
-			assertEquals("Package getSpecificationTitle returns a wrong string (2)",
-					
-							"MF Specification-Title", c.getPackage().getSpecificationTitle());
-			assertEquals("Package getSpecificationVendor returns a wrong string (2)",
-					
-							"MF Specification-Vendor", c.getPackage().getSpecificationVendor());
-			assertEquals("Package getSpecificationVersion returns a wrong string (2)",
-					"1.2.3", c.getPackage().getSpecificationVersion());
-		} catch (Exception e) {
-			fail("Exception in helperAttributes test : " + e.getMessage());
-		}
-
-		// No attributes in the package entry
-		Support_Resources.copyFile(resources, "Package",
-				"hyts_no_attributes.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_no_attributes.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.C", true, ucl);
-			assertEquals("Package getImplementationTitle returns a wrong string (3)",
-					
-							"MF Implementation-Title", c.getPackage().getImplementationTitle());
-			assertEquals("Package getImplementationVendor returns a wrong string (3)",
-					
-							"MF Implementation-Vendor", c.getPackage().getImplementationVendor());
-			assertEquals("Package getImplementationVersion returns a wrong string (3)",
-					"5.3.b1", c.getPackage().getImplementationVersion());
-			assertEquals("Package getSpecificationTitle returns a wrong string (3)",
-					
-							"MF Specification-Title", c.getPackage().getSpecificationTitle());
-			assertEquals("Package getSpecificationVendor returns a wrong string (3)",
-					
-							"MF Specification-Vendor", c.getPackage().getSpecificationVendor());
-			assertEquals("Package getSpecificationVersion returns a wrong string (3)",
-					"1.2.3", c.getPackage().getSpecificationVersion());
-		} catch (Exception e) {
-			fail("Exception during helperAttributes test : " + e.getMessage());
-		}
-
-		// Some attributes in the package entry
-		Support_Resources.copyFile(resources, "Package",
-				"hyts_some_attributes.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_some_attributes.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.C", true, ucl);
-			assertEquals("Package getImplementationTitle returns a wrong string (4)",
-					
-							"p Implementation-Title", c.getPackage().getImplementationTitle());
-			assertEquals("Package getImplementationVendor returns a wrong string (4)",
-					
-							"MF Implementation-Vendor", c.getPackage().getImplementationVendor());
-			assertEquals("Package getImplementationVersion returns a wrong string (4)",
-					"2.2.2", c.getPackage().getImplementationVersion());
-			assertEquals("Package getSpecificationTitle returns a wrong string (4)",
-					
-							"MF Specification-Title", c.getPackage().getSpecificationTitle());
-			assertEquals("Package getSpecificationVendor returns a wrong string (4)",
-					
-							"p Specification-Vendor", c.getPackage().getSpecificationVendor());
-			assertEquals("Package getSpecificationVersion returns a wrong string (4)",
-					"2.2.2", c.getPackage().getSpecificationVersion());
-		} catch (Exception e) {
-			fail("Exception during helperAttributes test : " + e.getMessage());
-		}
-
-		// subdirectory Package
-		Support_Resources.copyFile(resources, "Package", "hyts_pq.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_pq.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.q.C", true, ucl);
-			assertEquals("Package getImplementationTitle returns a wrong string (5)",
-					
-							"p Implementation-Title", c.getPackage().getImplementationTitle());
-			assertEquals("Package getImplementationVendor returns a wrong string (5)",
-					
-							"p Implementation-Vendor", c.getPackage().getImplementationVendor());
-			assertEquals("Package getImplementationVersion returns a wrong string (5)",
-					"1.1.3", c.getPackage().getImplementationVersion());
-			assertEquals("Package getSpecificationTitle returns a wrong string (5)",
-					
-							"p Specification-Title", c.getPackage().getSpecificationTitle());
-			assertEquals("Package getSpecificationVendor returns a wrong string (5)",
-					
-							"p Specification-Vendor", c.getPackage().getSpecificationVendor());
-			assertEquals("Package getSpecificationVersion returns a wrong string (5)",
-					
-							"2.2.0.0.0.0.0.0.0.0.0", c.getPackage().getSpecificationVersion());
-
-		} catch (Exception e) {
-			fail("Exception during helperAttributes test : " + e.getMessage());
-		}
-	}
-
-	private static Object invokeMethod(Object obj, String name,
-			Object[] parameters) {
-
-		Class[] types = new Class[parameters.length];
-		for (int i = 0; i < parameters.length; i++) {
-			types[i] = parameters[i].getClass();
-		}
-		Class<?> c = null;
-		if (obj instanceof Class)
-			c = (Class) obj;
-		else
-			c = obj.getClass();
-		while (c != null) {
-			try {
-				Method m = c.getDeclaredMethod(name, types);
-				m.setAccessible(true);
-				return m.invoke(obj, parameters);
-			} catch (NoSuchMethodException e) {
-				c = c.getSuperclass();
-			} catch (Exception e) {
-				break;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * @tests java.lang.Package#getName()
-	 */
-	public void test_getName() {
-		java.net.URL[] urls = new java.net.URL[1];
-		Class<?> c = null;
-		java.net.URLClassLoader ucl = null;
-		Support_Resources.copyFile(resources, "Package", "hyts_pq.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_pq.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.q.C", true, ucl);
-			assertEquals("Package getName returns a wrong string", "p.q", c.getPackage()
-					.getName());
-
-		} catch (Exception e) {
-			fail("Exception during getName test : " + e.getMessage());
-		}
-
-	}
-
-	/**
-	 * @tests java.lang.Package#getPackage(java.lang.String)
-	 */
-	public void test_getPackageLjava_lang_String() {
-		// Test for method java.lang.Package
-		// java.lang.Package.getPackage(java.lang.String)
-		Package.getPackage("java.lang");
-		try {
-			assertTrue("Package getPackage failed for java.lang", Package
-					.getPackage("java.lang") == java.lang.Object.class
-					.getPackage());
-		} catch (Exception e) {
-			fail("Unexpected exception " + e
-					+ " in Package.getPackage(java.lang.String)");
-		}
-
-	}
-
-	/**
-	 * @tests java.lang.Package#getPackages()
-	 */
-	public void test_getPackages() {
-		// Test for method java.lang.Package [] java.lang.Package.getPackages()
-		java.net.URL[] urls = new java.net.URL[1];
-
-		java.net.URLClassLoader ucl = null;
-		Support_Resources.copyFile(resources, "Package", "hyts_pq.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_pq.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			Class.forName("p.q.C", true, ucl);
-			Package[] pckgs = (Package[]) invokeMethod(ucl, "getPackages",
-					new Object[0]);
-			boolean found = false;
-			for (int i = 0; i < pckgs.length; i++)
-				if (pckgs[i].getName().equals("p.q")) {
-					found = true;
-					break;
-				}
-			assertTrue("Package getPackages failed to retrieve a package",
-					found);
-		} catch (Exception e) {
-			fail("Unexpected exception " + e
-					+ " in Package.getPackages()");
-		}
-	}
-
-	/**
-	 * @tests java.lang.Package#hashCode()
-	 */
-	public void test_hashCode() {
-		// Test for method int java.lang.Package.hashCode()
-		Package p1 = Package.getPackage("java.lang");
-		Package p2 = Package.getPackage("java.lang");
-		if (p1 != null)
-			assertTrue(
-					"Package hashCode does not return the same hashcode for 2 packages with the same name",
-					p1.hashCode() == p2.hashCode());
-	}
-
-	/**
-	 * @tests java.lang.Package#isCompatibleWith(java.lang.String)
-	 */
-	public void test_isCompatibleWithLjava_lang_String() {
-		// Test for method boolean
-		// java.lang.Package.isCompatibleWith(java.lang.String)
-		java.net.URL[] urls = new java.net.URL[1];
-		Class<?> c = null;
-		java.net.URLClassLoader ucl = null;
-		Support_Resources.copyFile(resources, "Package", "hyts_c.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_c.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.C", true, ucl);
-			Package p = c.getPackage();
-			assertTrue("Package isCompatibleWith fails with lower version", p
-					.isCompatibleWith("2.1.9."));
-			assertTrue("Package isCompatibleWith fails with same version (1)",
-					p.isCompatibleWith("2.2.0"));
-			assertTrue("Package isCompatibleWith fails with same version (2)",
-					p.isCompatibleWith("2.2"));
-			assertFalse("Package isCompatibleWith fails with higher version",
-                                    p.isCompatibleWith("2.2.0.0.1"));
-		} catch (Exception e) {
-			fail("Exception during isCompatibleWith test : " + e.getMessage());
-		}
-	}
-
-	/**
-	 * @tests java.lang.Package#isSealed()
-	 */
-	public void test_isSealed() {
-		// Test for method boolean java.lang.Package.isSealed()
-		java.net.URL[] urls = new java.net.URL[1];
-		Class<?> c = null;
-		java.net.URLClassLoader ucl = null;
-		Support_Resources.copyFile(resources, "Package", "hyts_pq.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_pq.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.q.C", true, ucl);
-			assertTrue("Package isSealed returns wrong boolean", c.getPackage()
-					.isSealed());
-
-		} catch (Exception e) {
-			fail("Exception during isSealed test : " + e.getMessage());
-		}
-
-	}
-
-	/**
-	 * @tests java.lang.Package#isSealed(java.net.URL)
-	 */
-	public void test_isSealedLjava_net_URL() {
-		// Test for method boolean java.lang.Package.isSealed(java.net.URL)
-		java.net.URL[] urls = new java.net.URL[1];
-		Class<?> c = null;
-		java.net.URLClassLoader ucl = null;
-		Support_Resources.copyFile(resources, "Package", "hyts_c.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_c.jar");
-			urls[0] = resourceURL;
-			ucl = new java.net.URLClassLoader(urls, null);
-			c = Class.forName("p.C", true, ucl);
-			assertFalse("Package isSealed returns wrong boolean (1)",
-                                    c.getPackage().isSealed(new URL("file:/" + resPath + "/")));
-			assertTrue("Package isSealed returns wrong boolean (2)",
-					c.getPackage()
-							.isSealed(
-									new URL("file:/" + resPath
-											+ "/Package/hyts_c.jar")));
-		} catch (Exception e) {
-			fail("Exception during isSealed test : " + e.getMessage());
-		}
-	}
-
-	/**
-	 * @tests java.lang.Package#toString()
-	 */
-	public void test_toString() {
-		// Test for method java.lang.String java.lang.Package.toString()
-		java.net.URL[] urls = new java.net.URL[1];
-		Class<?> c = null;
-		java.net.URLClassLoader ucl = null;
-		Support_Resources.copyFile(resources, "Package", "hyts_c.jar");
-		try {
-			java.net.URL resourceURL = new URL("file:/" + resPath
-					+ "/Package/hyts_c.jar");
-			urls[0] = resourceURL;
-			ucl = java.net.URLClassLoader.newInstance(urls, null);
-			c = Class.forName("p.C", true, ucl);
-			assertTrue("Package toString returns wrong string", c.getPackage()
-					.toString().length() > 0);
-		} catch (Exception e) {
-			fail("Exception during isSealed test : " + e.getMessage());
-		}
-	}
+    Package getTestPackage(String resourceJar, String className)
+            throws Exception {
+        Support_Resources.copyFile(resources, "Package", resourceJar);
+        URL resourceURL = new URL("file:/" + resPath + "/Package/"
+                + resourceJar);
 
-	@Override
+        URLClassLoader ucl = new URLClassLoader(new URL[] { resourceURL }, null);
+        return Class.forName(className, true, ucl).getPackage();
+    }
+
+    @Override
     protected void setUp() {
-		resources = Support_Resources.createTempFolder();
-		resPath = resources.toString();
-		if (resPath.charAt(0) == '/' || resPath.charAt(0) == '\\')
-			resPath = resPath.substring(1);
-	}
+        resources = Support_Resources.createTempFolder();
+        resPath = resources.toString();
+        if (resPath.charAt(0) == '/' || resPath.charAt(0) == '\\')
+            resPath = resPath.substring(1);
+    }
+
+    /**
+     * There is a newer version of this class with some actual tests but since
+     * the class is not implemented they all fail. For now use the stub test
+     * methods.
+     */
+
+    /**
+     * @tests java.lang.Package#getImplementationVendor()
+     * @tests java.lang.Package#getImplementationVersion()
+     * @tests java.lang.Package#getSpecificationTitle()
+     * @tests java.lang.Package#getSpecificationVendor()
+     * @tests java.lang.Package#getSpecificationVersion()
+     * @tests java.lang.Package#getImplementationTitle()
+     */
+    public void test_helper_Attributes() throws Exception {
+
+        Package p = getTestPackage("hyts_all_attributes.jar", "p.C");
+        assertEquals(
+                "Package getImplementationTitle returns a wrong string (1)",
+                "p Implementation-Title", p.getImplementationTitle());
+        assertEquals(
+                "Package getImplementationVendor returns a wrong string (1)",
+                "p Implementation-Vendor", p.getImplementationVendor());
+        assertEquals(
+                "Package getImplementationVersion returns a wrong string (1)",
+                "2.2.2", p.getImplementationVersion());
+        assertEquals(
+                "Package getSpecificationTitle returns a wrong string (1)",
+                "p Specification-Title", p.getSpecificationTitle());
+        assertEquals(
+                "Package getSpecificationVendor returns a wrong string (1)",
+                "p Specification-Vendor", p.getSpecificationVendor());
+        assertEquals(
+                "Package getSpecificationVersion returns a wrong string (1)",
+                "2.2.2", p.getSpecificationVersion());
+
+        // No entry for the package
+        Package p2 = getTestPackage("hyts_no_entry.jar", "p.C");
+        assertEquals(
+                "Package getImplementationTitle returns a wrong string (2)",
+                "MF Implementation-Title", p2.getImplementationTitle());
+        assertEquals(
+                "Package getImplementationVendor returns a wrong string (2)",
+                "MF Implementation-Vendor", p2.getImplementationVendor());
+        assertEquals(
+                "Package getImplementationVersion returns a wrong string (2)",
+                "5.3.b1", p2.getImplementationVersion());
+        assertEquals(
+                "Package getSpecificationTitle returns a wrong string (2)",
+                "MF Specification-Title", p2.getSpecificationTitle());
+        assertEquals(
+                "Package getSpecificationVendor returns a wrong string (2)",
+                "MF Specification-Vendor", p2.getSpecificationVendor());
+        assertEquals(
+                "Package getSpecificationVersion returns a wrong string (2)",
+                "1.2.3", p2.getSpecificationVersion());
+
+        // No attributes in the package entry
+        Package p3 = getTestPackage("hyts_no_attributes.jar", "p.C");
+        assertEquals(
+                "Package getImplementationTitle returns a wrong string (3)",
+                "MF Implementation-Title", p3.getImplementationTitle());
+        assertEquals(
+                "Package getImplementationVendor returns a wrong string (3)",
+                "MF Implementation-Vendor", p3.getImplementationVendor());
+        assertEquals(
+                "Package getImplementationVersion returns a wrong string (3)",
+                "5.3.b1", p3.getImplementationVersion());
+        assertEquals(
+                "Package getSpecificationTitle returns a wrong string (3)",
+                "MF Specification-Title", p3.getSpecificationTitle());
+        assertEquals(
+                "Package getSpecificationVendor returns a wrong string (3)",
+                "MF Specification-Vendor", p3.getSpecificationVendor());
+        assertEquals(
+                "Package getSpecificationVersion returns a wrong string (3)",
+                "1.2.3", p3.getSpecificationVersion());
+
+        // Some attributes in the package entry
+        Package p4 = getTestPackage("hyts_some_attributes.jar", "p.C");
+        assertEquals(
+                "Package getImplementationTitle returns a wrong string (4)",
+                "p Implementation-Title", p4.getImplementationTitle());
+        assertEquals(
+                "Package getImplementationVendor returns a wrong string (4)",
+                "MF Implementation-Vendor", p4.getImplementationVendor());
+        assertEquals(
+                "Package getImplementationVersion returns a wrong string (4)",
+                "2.2.2", p4.getImplementationVersion());
+        assertEquals(
+                "Package getSpecificationTitle returns a wrong string (4)",
+                "MF Specification-Title", p4.getSpecificationTitle());
+        assertEquals(
+                "Package getSpecificationVendor returns a wrong string (4)",
+                "p Specification-Vendor", p4.getSpecificationVendor());
+        assertEquals(
+                "Package getSpecificationVersion returns a wrong string (4)",
+                "2.2.2", p4.getSpecificationVersion());
+
+        // subdirectory Package
+        Package p5 = getTestPackage("hyts_pq.jar", "p.q.C");
+        assertEquals(
+                "Package getImplementationTitle returns a wrong string (5)",
+                "p Implementation-Title", p5.getImplementationTitle());
+        assertEquals(
+                "Package getImplementationVendor returns a wrong string (5)",
+                "p Implementation-Vendor", p5.getImplementationVendor());
+        assertEquals(
+                "Package getImplementationVersion returns a wrong string (5)",
+                "1.1.3", p5.getImplementationVersion());
+        assertEquals(
+                "Package getSpecificationTitle returns a wrong string (5)",
+                "p Specification-Title", p5.getSpecificationTitle());
+        assertEquals(
+                "Package getSpecificationVendor returns a wrong string (5)",
+                "p Specification-Vendor", p5.getSpecificationVendor());
+        assertEquals(
+                "Package getSpecificationVersion returns a wrong string (5)",
+                "2.2.0.0.0.0.0.0.0.0.0", p5.getSpecificationVersion());
+    }
+
+    /**
+     * @tests java.lang.Package#getName()
+     */
+    public void test_getName() throws Exception {
+        Package p = getTestPackage("hyts_pq.jar", "p.q.C");
+        assertEquals("Package getName returns a wrong string", "p.q", p
+                .getName());
+    }
+
+    /**
+     * @tests java.lang.Package#getPackage(java.lang.String)
+     */
+    public void test_getPackageLjava_lang_String() {
+        assertSame("Package getPackage failed for java.lang", Package
+                .getPackage("java.lang"), Package.getPackage("java.lang"));
+
+        assertSame("Package getPackage failed for java.lang", Package
+                .getPackage("java.lang"), Object.class.getPackage());
+    }
+
+    /**
+     * @tests java.lang.Package#getPackages()
+     */
+    public void test_getPackages() throws Exception {
+        Package[] pckgs = Package.getPackages();
+        boolean found = false;
+        for (int i = 0; i < pckgs.length; i++) {
+            if (pckgs[i].getName().equals("java.util")) {
+                found = true;
+                break;
+            }
+        }
+        assertTrue("Package getPackages failed to retrieve a package", found);
+    }
+
+    /**
+     * @tests java.lang.Package#hashCode()
+     */
+    public void test_hashCode() {
+        Package p1 = Package.getPackage("java.lang");
+        if (p1 != null) {
+            assertEquals(p1.hashCode(), "java.lang".hashCode());
+        }
+    }
+
+    /**
+     * @tests java.lang.Package#isCompatibleWith(java.lang.String)
+     */
+    public void test_isCompatibleWithLjava_lang_String() throws Exception {
+        Package p = getTestPackage("hyts_c.jar", "p.C");
+
+        assertTrue("Package isCompatibleWith fails with lower version", p
+                .isCompatibleWith("2.1.9.9"));
+        assertTrue("Package isCompatibleWith fails with same version (1)", p
+                .isCompatibleWith("2.2.0"));
+        assertTrue("Package isCompatibleWith fails with same version (2)", p
+                .isCompatibleWith("2.2"));
+        assertFalse("Package isCompatibleWith fails with higher version", p
+                .isCompatibleWith("2.2.0.0.1"));
+        /*
+         * RI throws NPE...
+         */ 
+        try {
+            p.isCompatibleWith(null);
+            fail("Null version is illegal");
+        } catch (NullPointerException ok) {}
+
+        try {
+            p.isCompatibleWith("");
+            fail("Empty version is illegal");
+        } catch (NumberFormatException ok) {}
+        try {
+            p.isCompatibleWith(".");
+            fail("'.' version is illegal");
+        } catch (NumberFormatException ok) {}
+        try {
+            p.isCompatibleWith("1.2.");
+            fail("'1.2.' version is illegal");
+        } catch (NumberFormatException ok) {}
+        try {
+            p.isCompatibleWith(".9");
+            fail("'.9' version is illegal");
+        } catch (NumberFormatException ok) {}
+    }
+
+    /**
+     * @tests java.lang.Package#isSealed()
+     */
+    public void test_isSealed() throws Exception {
+        Package p = getTestPackage("hyts_pq.jar", "p.q.C");
+        assertTrue("Package isSealed returns wrong boolean", p.isSealed());
+    }
+
+    /**
+     * @tests java.lang.Package#isSealed(java.net.URL)
+     */
+    public void test_isSealedLjava_net_URL() throws Exception {
+        Package p = getTestPackage("hyts_c.jar", "p.C");
+        assertFalse("Package isSealed returns wrong boolean (1)", p
+                .isSealed(new URL("file:/" + resPath + "/")));
+        assertTrue("Package isSealed returns wrong boolean (2)", p
+                .isSealed(new URL("file:/" + resPath + "/Package/hyts_c.jar")));
+    }
+
+    /**
+     * @tests java.lang.Package#toString()
+     */
+    public void test_toString() throws Exception {
+        Package p = getTestPackage("hyts_c.jar", "p.C");
+        assertTrue("Package toString returns wrong string", p.toString()
+                .length() > 0);
+    }
 }

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java?view=diff&rev=501814&r1=501813&r2=501814
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java Wed Jan 31 03:39:43 2007
@@ -272,6 +272,14 @@
         if (specVersion == null) { 
             throw new NumberFormatException("No version defined for implementation");
         }
+
+        if (specVersion.startsWith(".") || specVersion.endsWith(".")) {
+            throw new NumberFormatException("Wrong implementation version: should not start or end with '.'");
+        }
+
+        if (desiredVersion.startsWith(".") || desiredVersion.endsWith(".")) {
+            throw new NumberFormatException("Wrong version to check: should not start or end with '.'");
+        }
         
         StringTokenizer specVersionTokens = new StringTokenizer(specVersion,
                 ".");