Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
---
 Makefile                                |    3 +-
 regression/jvm/ClassExceptionsTest.java |   66 +++++++++++++++++++++++++++++++
 regression/run-suite.sh                 |    1 +
 3 files changed, 69 insertions(+), 1 deletions(-)
 create mode 100644 regression/jvm/ClassExceptionsTest.java

diff --git a/Makefile b/Makefile
index 0273900..44a7768 100644
--- a/Makefile
+++ b/Makefile
@@ -238,7 +238,8 @@ REGRESSION_TEST_SUITE_CLASSES = \
        regression/jvm/LongArithmeticExceptionsTest.class \
        regression/jvm/MethodInvocationExceptionsTest.class \
        regression/jvm/ObjectCreationAndManipulationExceptionsTest.class \
-       regression/jvm/SynchronizationExceptionsTest.class
+       regression/jvm/SynchronizationExceptionsTest.class \
+       regression/jvm/ClassExceptionsTest.class
 
 $(REGRESSION_TEST_SUITE_CLASSES): %.class: %.java
        $(E) "  JAVAC   " $@
diff --git a/regression/jvm/ClassExceptionsTest.java 
b/regression/jvm/ClassExceptionsTest.java
new file mode 100644
index 0000000..7a875d5
--- /dev/null
+++ b/regression/jvm/ClassExceptionsTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2009 Tomasz Grabiec
+ *
+ * This file is released under the GPL version 2 with the following
+ * clarification and special exception:
+ *
+ *     Linking this library statically or dynamically with other modules is
+ *     making a combined work based on this library. Thus, the terms and
+ *     conditions of the GNU General Public License cover the whole
+ *     combination.
+ *
+ *     As a special exception, the copyright holders of this library give you
+ *     permission to link this library with independent modules to produce an
+ *     executable, regardless of the license terms of these independent
+ *     modules, and to copy and distribute the resulting executable under terms
+ *     of your choice, provided that you also meet, for each linked independent
+ *     module, the terms and conditions of the license of that module. An
+ *     independent module is a module which is not derived from or based on
+ *     this library. If you modify this library, you may extend this exception
+ *     to your version of the library, but you are not obligated to do so. If
+ *     you do not wish to do so, delete this exception statement from your
+ *     version.
+ *
+ * Please refer to the file LICENSE for details.
+ */
+package jvm;
+
+import jato.internal.VM;
+
+/**
+ * @author Tomasz Grabiec
+ */
+public class ClassExceptionsTest extends TestCase {
+    static class A {
+        public static int field;
+    };
+
+    public static void testClassInitFailure() {
+        boolean caught = false;
+
+        VM.enableFault(VM.FAULT_IN_CLASS_INIT, "ClassExceptionsTest$A");
+
+        try {
+            A.field = 0;
+        } catch (ExceptionInInitializerError e) {
+            caught = true;
+        }
+
+        VM.disableFault(VM.FAULT_IN_CLASS_INIT);
+
+        assertTrue(caught);
+
+        caught = false;
+        try {
+            A.field = 0;
+        } catch (NoClassDefFoundError e) {
+            caught = true;
+        }
+
+        assertTrue(caught);
+    }
+
+    public static void main(String []args) {
+        testClassInitFailure();
+    }
+}
\ No newline at end of file
diff --git a/regression/run-suite.sh b/regression/run-suite.sh
index 688b595..7dc87bf 100755
--- a/regression/run-suite.sh
+++ b/regression/run-suite.sh
@@ -84,6 +84,7 @@ if [ -z "$CLASS_LIST" ]; then
     run_java jvm.MethodInvocationExceptionsTest 0
     run_java jvm.ObjectCreationAndManipulationExceptionsTest 0
     run_java jvm.SynchronizationExceptionsTest 0
+    run_java jvm.ClassExceptionsTest 0
 else 
     for i in $CLASS_LIST; do
        run_java $i 0
-- 
1.6.0.6


------------------------------------------------------------------------------
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to