changeset 30:94e0142da92d draft

Made this test compatible with JDK7: src/org/RhinoTests/ScriptExceptionClassTest.java.
author Pavel Tisnovsky <ptisnovs@redhat.com>
date Mon, 03 Sep 2012 13:05:48 +0200
parents 9e4f9b602df1
children a5384678025c
files ChangeLog src/org/RhinoTests/ScriptExceptionClassTest.java
diffstat 2 files changed, 68 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Aug 29 17:32:04 2012 +0200
+++ b/ChangeLog	Mon Sep 03 13:05:48 2012 +0200
@@ -1,3 +1,8 @@
+2012-09-03  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* src/org/RhinoTests/ScriptExceptionClassTest.java:
+	Made this test compatible with JDK7.
+
 2012-08-29  Pavel Tisnovsky  <ptisnovs@redhat.com>
 
 	* src/org/RhinoTests/ScriptEngineClassTest.java:
--- a/src/org/RhinoTests/ScriptExceptionClassTest.java	Wed Aug 29 17:32:04 2012 +0200
+++ b/src/org/RhinoTests/ScriptExceptionClassTest.java	Mon Sep 03 13:05:48 2012 +0200
@@ -43,6 +43,8 @@
 import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -217,68 +219,46 @@
      * Test for method javax.script.ScriptException.getClass().getConstructors()
      */
     protected void testGetConstructors() {
-        Constructor[] constructors = this.scriptExceptionClass.getConstructors();
+        // map of constructors which should exists
+        Map<String, String> testedConstructors = new HashMap<String, String>();
+        testedConstructors.put("public javax.script.ScriptException(java.lang.String)", "javax.script.ScriptException");
+        testedConstructors.put("public javax.script.ScriptException(java.lang.Exception)", "javax.script.ScriptException");
+        testedConstructors.put("public javax.script.ScriptException(java.lang.String,java.lang.String,int)", "javax.script.ScriptException");
+        testedConstructors.put("public javax.script.ScriptException(java.lang.String,java.lang.String,int,int)", "javax.script.ScriptException");
+
+        Constructor[] constructors = this.scriptExceptionClass.getDeclaredConstructors();
         assertEquals(constructors.length, 4, "only 4 constructors should be set");
-        String constructorName;
-        String constructorString;
-        constructorName = constructors[0].getName();
-        constructorString = constructors[0].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.String)",
-                "wrong constructor.toString() " + constructorName);
-        constructorName = constructors[1].getName();
-        constructorString = constructors[1].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.Exception)",
-                "wrong constructor.toString() " + constructorName);
-        constructorName = constructors[2].getName();
-        constructorString = constructors[2].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.String,java.lang.String,int)",
-                "wrong constructor.toString() " + constructorName);
-        constructorName = constructors[3].getName();
-        constructorString = constructors[3].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.String,java.lang.String,int,int)",
-                "wrong constructor.toString() " + constructorName);
+
+        // check if all constructors exists
+        for (Constructor constructor : constructors) {
+            String constructorName = constructors[0].getName();
+            String constructorString = constructors[0].toString();
+            assertTrue(testedConstructors.containsKey(constructorString), "wrong constructor.toString() " + constructorName);
+            assertEquals(testedConstructors.get(constructorString), constructorName, "wrong constructor name " + constructorName);
+        }
     }
 
     /**
      * Test for method javax.script.ScriptException.getClass().getDeclaredConstructors()
      */
     protected void testGetDeclaredConstructors() {
+        // map of declared constructors which should exists
+        Map<String, String> testedConstructors = new HashMap<String, String>();
+        testedConstructors.put("public javax.script.ScriptException(java.lang.String)", "javax.script.ScriptException");
+        testedConstructors.put("public javax.script.ScriptException(java.lang.Exception)", "javax.script.ScriptException");
+        testedConstructors.put("public javax.script.ScriptException(java.lang.String,java.lang.String,int)", "javax.script.ScriptException");
+        testedConstructors.put("public javax.script.ScriptException(java.lang.String,java.lang.String,int,int)", "javax.script.ScriptException");
+
         Constructor[] constructors = this.scriptExceptionClass.getDeclaredConstructors();
         assertEquals(constructors.length, 4, "only 4 constructors should be set");
-        String constructorName;
-        String constructorString;
-        constructorName = constructors[0].getName();
-        constructorString = constructors[0].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.String)",
-                "wrong constructor.toString() " + constructorName);
-        constructorName = constructors[1].getName();
-        constructorString = constructors[1].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.Exception)",
-                "wrong constructor.toString() " + constructorName);
-        constructorName = constructors[2].getName();
-        constructorString = constructors[2].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.String,java.lang.String,int)",
-                "wrong constructor.toString() " + constructorName);
-        constructorName = constructors[3].getName();
-        constructorString = constructors[3].toString();
-        assertEquals(constructorName, "javax.script.ScriptException",
-                "wrong constructor name " + constructorName);
-        assertEquals(constructorString, "public javax.script.ScriptException(java.lang.String,java.lang.String,int,int)",
-                "wrong constructor.toString() " + constructorName);
+
+        // check if all constructors exists
+        for (Constructor constructor : constructors) {
+            String constructorName = constructors[0].getName();
+            String constructorString = constructors[0].toString();
+            assertTrue(testedConstructors.containsKey(constructorString), "wrong constructor.toString() " + constructorName);
+            assertEquals(testedConstructors.get(constructorString), constructorName, "wrong constructor name " + constructorName);
+        }
     }
 
     /**
@@ -331,7 +311,7 @@
      */
     protected void testGetMethods() {
         // following methods should be inherited
-        final String[] methodsThatShouldExists = {
+        final String[] methodsThatShouldExists_jdk6 = {
             "public boolean java.lang.Object.equals(java.lang.Object)",
             "public final native java.lang.Class java.lang.Object.getClass()",
             "public final native void java.lang.Object.notify()",
@@ -355,6 +335,34 @@
             "public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)",
             "public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])",
         };
+
+        final String[] methodsThatShouldExists_jdk7 = {
+            "public boolean java.lang.Object.equals(java.lang.Object)",
+            "public final native java.lang.Class java.lang.Object.getClass()",
+            "public final native void java.lang.Object.notify()",
+            "public final native void java.lang.Object.notifyAll()",
+            "public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException",
+            "public final void java.lang.Object.wait() throws java.lang.InterruptedException",
+            "public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException",
+            "public int javax.script.ScriptException.getColumnNumber()",
+            "public int javax.script.ScriptException.getLineNumber()",
+            "public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()",
+            "public java.lang.String java.lang.Throwable.getLocalizedMessage()",
+            "public java.lang.String java.lang.Throwable.toString()",
+            "public java.lang.String javax.script.ScriptException.getFileName()",
+            "public java.lang.String javax.script.ScriptException.getMessage()",
+            "public synchronized java.lang.Throwable java.lang.Throwable.getCause()",
+            "public native int java.lang.Object.hashCode()",
+            "public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)",
+            "public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()",
+            "public void java.lang.Throwable.printStackTrace()",
+            "public void java.lang.Throwable.printStackTrace(java.io.PrintStream)",
+            "public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)",
+            "public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])",
+            "public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)",
+            "public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()",
+        };
+
         // get all inherited methods
         Method[] methods = this.scriptExceptionClass.getMethods();
         // and transform the array into a list of method names
@@ -362,6 +370,7 @@
         for (Method method : methods) {
             methodsAsString.add(method.toString());
         }
+        String[] methodsThatShouldExists = getJavaVersion() < 7 ? methodsThatShouldExists_jdk6 : methodsThatShouldExists_jdk7;
         // check if all required methods really exists
         for (String methodThatShouldExists : methodsThatShouldExists) {
             assertTrue(methodsAsString.contains(methodThatShouldExists),