tests/regression/assertion/*.class
tests/regression/assertion/packagetest/*.class
tests/regression/bugzilla/*.class
-tests/regression/codepatching/*.class
tests/regression/jasmin/*.class
tests/regression/junit/*.class
tests/regression/native/*.class
[tests/Makefile]
[tests/regression/Makefile]
[tests/regression/bugzilla/Makefile]
- [tests/regression/codepatching/Makefile]
[tests/regression/assertion/Makefile]
[tests/regression/jasmin/Makefile]
[tests/regression/junit/Makefile]
SUBDIRS = \
assertion \
bugzilla \
- codepatching \
jasmin \
junit \
native \
+++ /dev/null
-## tests/regression/codepatching/Makefile.am
-##
-## Copyright (C) 1996-2005, 2006, 2008
-## CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
-##
-## This file is part of CACAO.
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License as
-## published by the Free Software Foundation; either version 2, or (at
-## your option) any later version.
-##
-## This program is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-## 02110-1301, USA.
-
-
-JAVA = $(top_builddir)/src/cacao/cacao
-JAVACMD = $(JAVA) -Xbootclasspath:$(BOOTCLASSPATH)
-JAVACCMD = $(JAVAC) -bootclasspath $(BOOTCLASSPATH)
-
-SOURCE_FILES = \
- $(srcdir)/aastoreconstClass.java \
- $(srcdir)/checkcastC.java \
- $(srcdir)/checkcastI.java \
- $(srcdir)/getfieldD.java \
- $(srcdir)/getfieldF.java \
- $(srcdir)/getfieldI.java \
- $(srcdir)/getfieldJ.java \
- $(srcdir)/getfieldL.java \
- $(srcdir)/getstaticD.java \
- $(srcdir)/getstaticF.java \
- $(srcdir)/getstaticI.java \
- $(srcdir)/getstaticJ.java \
- $(srcdir)/getstaticL.java \
- $(srcdir)/instanceofC.java \
- $(srcdir)/instanceofI.java \
- $(srcdir)/invokespecial.java \
- $(srcdir)/invokestatic.java \
- $(srcdir)/multianewarray.java \
- $(srcdir)/newarray.java \
- $(srcdir)/putfieldD.java \
- $(srcdir)/putfieldF.java \
- $(srcdir)/putfieldI.java \
- $(srcdir)/putfieldJ.java \
- $(srcdir)/putfieldL.java \
- $(srcdir)/putfieldconstC.java \
- $(srcdir)/putfieldconstD.java \
- $(srcdir)/putfieldconstF.java \
- $(srcdir)/putfieldconstI.java \
- $(srcdir)/putfieldconstJ.java \
- $(srcdir)/putfieldconstL.java \
- $(srcdir)/putstaticD.java \
- $(srcdir)/putstaticF.java \
- $(srcdir)/putstaticI.java \
- $(srcdir)/putstaticJ.java \
- $(srcdir)/putstaticL.java \
- $(srcdir)/putstaticconstC.java \
- $(srcdir)/putstaticconstD.java \
- $(srcdir)/putstaticconstF.java \
- $(srcdir)/putstaticconstI.java \
- $(srcdir)/putstaticconstJ.java \
- $(srcdir)/putstaticconstL.java \
- $(srcdir)/test.java
-
-EXTRA_DIST = \
- $(SOURCE_FILES)
-
-MAINCLASS = \
- test.class
-
-CLASSES = \
- aastoreconstClass.class \
- checkcastC.class \
- checkcastI.class \
- getfieldD.class \
- getfieldF.class \
- getfieldI.class \
- getfieldJ.class \
- getfieldL.class \
- getstaticD.class \
- getstaticF.class \
- getstaticI.class \
- getstaticJ.class \
- getstaticL.class \
- instanceofC.class \
- instanceofI.class \
- invokespecial.class \
- invokestatic.class \
- multianewarray.class \
- newarray.class \
- putfieldD.class \
- putfieldF.class \
- putfieldI.class \
- putfieldJ.class \
- putfieldL.class \
- putfieldconstC.class \
- putfieldconstD.class \
- putfieldconstF.class \
- putfieldconstI.class \
- putfieldconstJ.class \
- putfieldconstL.class \
- putstaticD.class \
- putstaticF.class \
- putstaticI.class \
- putstaticJ.class \
- putstaticL.class \
- putstaticconstC.class \
- putstaticconstD.class \
- putstaticconstF.class \
- putstaticconstI.class \
- putstaticconstJ.class \
- putstaticconstL.class
-
-CLEANFILES = \
- *.class
-
-build:
- @$(JAVACCMD) -d . $(SOURCE_FILES)
-
-check: build
- @LD_LIBRARY_PATH=$(top_builddir)/src/cacao/.libs $(JAVACMD) test
-
-remove:
- $(RM) $(CLASSES)
-
-
-## Local variables:
-## mode: Makefile
-## indent-tabs-mode: t
-## c-basic-offset: 4
-## tab-width: 8
-## compile-command: "automake --add-missing"
-## End:
+++ /dev/null
-public class aastoreconstClass {
-}
-
+++ /dev/null
-public class checkcastC {
-}
+++ /dev/null
-public interface checkcastI {
-}
+++ /dev/null
-public class getfieldD {
- public double d = 789.012;
-}
+++ /dev/null
-public class getfieldF {
- public float f = 123.456F;
-}
+++ /dev/null
-public class getfieldI {
- public int i = 123;
-}
+++ /dev/null
-public class getfieldJ {
- public long l = 1234567890123L;
-}
+++ /dev/null
-public class getfieldL {
- public Object o = null;
-}
+++ /dev/null
-public class getstaticD {
- public static double d = 789.012;
-}
+++ /dev/null
-public class getstaticF {
- public static float f = 123.456F;
-}
+++ /dev/null
-public class getstaticI {
- public static int i = 123;
-}
+++ /dev/null
-public class getstaticJ {
- public static long l = 1234567890123L;
-}
+++ /dev/null
-public class getstaticL {
- public static Object o = null;
-}
+++ /dev/null
-public class instanceofC {
-}
+++ /dev/null
-public interface instanceofI {
-}
+++ /dev/null
-public class invokespecial {
- public invokespecial() {
- System.out.println("OK");
- }
-}
+++ /dev/null
-public class invokestatic {
- public static void sub() {
- System.out.println("OK");
- }
-}
+++ /dev/null
-public class multianewarray {
-}
+++ /dev/null
-public class newarray {
-}
+++ /dev/null
-public class putfieldD {
- public double d;
-}
+++ /dev/null
-public class putfieldF {
- public float f;
-}
+++ /dev/null
-public class putfieldI {
- public int i;
-}
+++ /dev/null
-public class putfieldJ {
- public long l;
-}
+++ /dev/null
-public class putfieldL {
- public Object o;
-}
+++ /dev/null
-public class putfieldconstC {
- public Class c;
-}
+++ /dev/null
-public class putfieldconstD {
- public double d;
-}
+++ /dev/null
-public class putfieldconstF {
- public float f;
-}
+++ /dev/null
-public class putfieldconstI {
- public int i;
-}
+++ /dev/null
-public class putfieldconstJ {
- public long l;
-}
+++ /dev/null
-public class putfieldconstL {
- public Object o;
-}
+++ /dev/null
-public class putstaticD {
- public static double d;
-}
+++ /dev/null
-public class putstaticF {
- public static float f;
-}
+++ /dev/null
-public class putstaticI {
- public static int i;
-}
+++ /dev/null
-public class putstaticJ {
- public static long l;
-}
+++ /dev/null
-public class putstaticL {
- public static Object o;
-}
+++ /dev/null
-public class putstaticconstC {
- public static Class c;
-}
+++ /dev/null
-public class putstaticconstD {
- public static double d;
-}
+++ /dev/null
-public class putstaticconstF {
- public static float f;
-}
+++ /dev/null
-public class putstaticconstI {
- public static int i;
-}
+++ /dev/null
-public class putstaticconstJ {
- public static long l;
-}
+++ /dev/null
-public class putstaticconstL {
- public static Object o;
-}
+++ /dev/null
-public class test extends Thread {
- static boolean doit = true;
-
- public static void main(String[] argv) {
- int threadcount = 1;
-
- if (argv.length > 0) {
- for (int i = 0; i < argv.length; i++) {
- if (argv[i].equals("--help")) {
- usage();
-
- } else if (argv[i].equals("skip")) {
- doit = false;
-
- } else {
- threadcount = Integer.valueOf(argv[i]).intValue();
- }
- }
- }
-
- System.out.println("Running with " + threadcount + " threads.");
-
- for (int i = 0; i < threadcount; i++) {
- new test().start();
- }
- }
-
- static void usage() {
- System.out.println("test [number of threads] [skip]");
- System.exit(1);
- }
-
- public test() {
- }
-
- public void start() {
- run();
- }
-
- public void run() {
- invokestatic();
-
- getstatic();
- putstatic();
- putstaticconst();
-
- getfield();
- putfield();
- putfieldconst();
-
- newarray();
- multianewarray();
-
- invokespecial();
-
- checkcast();
- _instanceof();
-
- aastoreconst();
- }
-
-
- final private static void invokestatic() {
- try {
- p("invokestatic: ");
- if (doit)
- invokestatic.sub();
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
-
- private void getstatic() {
- try {
- p("getstatic (I): ");
- if (doit)
- check(getstaticI.i, 123);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getstatic (J): ");
- if (doit)
- check(getstaticJ.l, 1234567890123L);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getstatic (F): ");
- if (doit)
- check(getstaticF.f, 123.456F);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getstatic (D): ");
- if (doit)
- check(getstaticD.d, 789.012);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getstatic (L): ");
- if (doit)
- check(getstaticL.o, null);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void putstatic() {
- try {
- p("putstatic (I): ");
- if (doit) {
- int i = 123;
- putstaticI.i = i;
- check(putstaticI.i, i);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstatic (J): ");
- if (doit) {
- long l = 1234567890123L;
- putstaticJ.l = l;
- check(putstaticJ.l, l);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstatic (F): ");
- if (doit) {
- float f = 123.456F;
- putstaticF.f = f;
- check(putstaticF.f, f);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstatic (D): ");
- if (doit) {
- double d = 789.012;
- putstaticD.d = d;
- check(putstaticD.d, d);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
-
- try {
- p("putstatic (L): ");
- if (doit) {
- Object o = null;
- putstaticL.o = o;
- check(putstaticL.o, o);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void putstaticconst() {
- try {
- p("putstaticconst (I): ");
- if (doit) {
- putstaticconstI.i = 123;
- check(putstaticconstI.i, 123);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst (J): ");
- if (doit) {
- putstaticconstJ.l = 1234567890123L;
- check(putstaticconstJ.l, 1234567890123L);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst (F): ");
- if (doit) {
- putstaticconstF.f = 123.456F;
- check(putstaticconstF.f, 123.456F);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst (D): ");
- if (doit) {
- putstaticconstD.d = 789.012;
- check(putstaticconstD.d, 789.012);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst zero (I): ");
- if (doit) {
- putstaticconstI.i = 0;
- check(putstaticconstI.i, 0);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst zero (J): ");
- if (doit) {
- putstaticconstJ.l = 0L;
- check(putstaticconstJ.l, 0L);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst zero (F): ");
- if (doit) {
- putstaticconstF.f = 0.0F;
- check(putstaticconstF.f, 0.0F);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst zero (D): ");
- if (doit) {
- putstaticconstD.d = 0.0;
- check(putstaticconstD.d, 0.0);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst zero (L): ");
- if (doit) {
- putstaticconstL.o = null;
- check(putstaticconstL.o, null);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putstaticconst unresolved class: ");
- if (doit) {
- putstaticconstC.c = putstaticconstC.class;
- check(putstaticconstC.c, Class.forName("putstaticconstC"));
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- } catch (ClassNotFoundException t) {
- failed(t);
- }
- }
-
- private void getfield() {
- try {
- p("getfield (I): ");
- if (doit)
- check(new getfieldI().i, 123);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getfield (J): ");
- if (doit)
- check(new getfieldJ().l, 1234567890123L);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getfield (F): ");
- if (doit)
- check(new getfieldF().f, 123.456F);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getfield (D): ");
- if (doit)
- check(new getfieldD().d, 789.012);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("getfield (L): ");
- if (doit)
- check(new getfieldL().o, null);
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void putfield() {
- try {
- p("putfield (I): ");
- if (doit) {
- putfieldI pfi = new putfieldI();
- int i = 123;
- pfi.i = i;
- check(pfi.i, i);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfield (J): ");
- if (doit) {
- putfieldJ pfj = new putfieldJ();
- long l = 1234567890123L;
- pfj.l = l;
- check(pfj.l, l);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfield (F): ");
- if (doit) {
- putfieldF pff = new putfieldF();
- float f = 123.456F;
- pff.f = f;
- check(pff.f, f);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfield (D): ");
- if (doit) {
- putfieldD pfd = new putfieldD();
- double d = 789.012;
- pfd.d = d;
- check(pfd.d, d);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfield (L): ");
- if (doit) {
- putfieldL pfl = new putfieldL();
- Object o = null;
- pfl.o = o;
- check(pfl.o, o);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void putfieldconst() {
- try {
- p("putfieldconst (I): ");
- if (doit) {
- putfieldconstI pfci = new putfieldconstI();
- pfci.i = 123;
- check(pfci.i, 123);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst (J): ");
- if (doit) {
- putfieldconstJ pfcj = new putfieldconstJ();
- pfcj.l = 1234567890123L;
- check(pfcj.l, 1234567890123L);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst (F): ");
- if (doit) {
- putfieldconstF pfcf = new putfieldconstF();
- pfcf.f = 123.456F;
- check(pfcf.f, 123.456F);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst (D): ");
- if (doit) {
- putfieldconstD pfcd = new putfieldconstD();
- pfcd.d = 789.012;
- check(pfcd.d, 789.012);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst zero (I): ");
- if (doit) {
- putfieldconstI pfci = new putfieldconstI();
- pfci.i = 0;
- check(pfci.i, 0);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst zero (J): ");
- if (doit) {
- putfieldconstJ pfcj = new putfieldconstJ();
- pfcj.l = 0L;
- check(pfcj.l, 0L);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst zero (F): ");
- if (doit) {
- putfieldconstF pfcf = new putfieldconstF();
- pfcf.f = 0.0F;
- check(pfcf.f, 0.0F);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst zero (D): ");
- if (doit) {
- putfieldconstD pfcd = new putfieldconstD();
- pfcd.d = 0.0;
- check(pfcd.d, 0.0);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst zero (L): ");
- if (doit) {
- putfieldconstL pfcl = new putfieldconstL();
- pfcl.o = null;
- check(pfcl.o, null);
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("putfieldconst unresolved class: ");
- if (doit) {
- putfieldconstC pfcc = new putfieldconstC();
- pfcc.c = putfieldconstC.class;
- check(pfcc.c, Class.forName("putfieldconstC"));
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- } catch (ClassNotFoundException t) {
- failed(t);
- }
- }
-
- private void newarray() {
- try {
- p("newarray: ");
- if (doit) {
- newarray[] na = new newarray[1];
- }
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void multianewarray() {
- try {
- p("multianewarray: ");
- if (doit) {
- multianewarray[][] ma = new multianewarray[1][1];
- }
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void invokespecial() {
- try {
- p("invokespecial: ");
- if (doit)
- new invokespecial();
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void checkcast() {
- Object o = new Object();
-
- // class
- try {
- p("checkcast class: ");
- if (doit) {
- checkcastC cc = (checkcastC) o;
- failed();
- } else
- ok();
- } catch (ClassCastException e) {
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- // interface
- try {
- p("checkcast interface: ");
- if (doit) {
- checkcastI ci = (checkcastI) o;
- failed();
- } else
- ok();
- } catch (ClassCastException e) {
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
-
- // array
-
- Object[] oa = new Object[1];
-
- try {
- p("checkcast class array: ");
- if (doit) {
- checkcastC[] cca = (checkcastC[]) oa;
- failed();
- } else
- ok();
- } catch (ClassCastException e) {
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void _instanceof() {
- Object o = new Object();
-
- try {
- p("instanceof class: ");
- if (doit)
- if (o instanceof instanceofC)
- failed();
- else
- ok();
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
- try {
- p("instanceof interface: ");
- if (doit)
- if (o instanceof instanceofI)
- failed();
- else
- ok();
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
-
-
- // array
-
- Object[] oa = new Object[1];
-
- try {
- p("instanceof class array: ");
- if (doit)
- if (oa instanceof instanceofC[])
- failed();
- else
- ok();
- else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- }
- }
-
- private void aastoreconst() {
- Class[] ca = new Class[1];
-
- try {
- p("aastoreconst of unresolved class != NULL: ");
- if (doit) {
- ca[0] = aastoreconstClass.class;
-
- if (ca[0] != null)
- ok();
- else
- failed();
-
- p("aastoreconst of unresolved correct value: ");
- check(ca[0],Class.forName("aastoreconstClass"));
- } else
- ok();
- } catch (NoClassDefFoundError t) {
- failed(t);
- } catch (ClassNotFoundException t) {
- failed(t);
- }
- }
-
- private static final void ok() {
- pln("OK");
- }
-
- private static final void failed() {
- pln("FAILED");
- }
-
- private static final void failed(Throwable t) {
- pln("FAILED: " + t);
- }
-
- private static final void check(int a, int b) {
- if (a == b)
- ok();
- else
- pln("FAILED: " + a + " != " + b + " (0x" + Integer.toHexString(a) + " != 0x" + Integer.toHexString(b) + ")");
- }
-
- private static final void check(long a, long b) {
- if (a == b)
- ok();
- else
- pln("FAILED: " + a + " != " + b + " (0x" + Long.toHexString(a) + " != 0x" + Long.toHexString(b) + ")");
- }
-
- private static final void check(float a, float b) {
- if (a == b)
- ok();
- else
- pln("FAILED: " + a + " != " + b);
- }
-
- private static final void check(double a, double b) {
- if (a == b)
- ok();
- else
- pln("FAILED: " + a + " != " + b);
- }
-
- private static final void check(Object a, Object b) {
- if (a == b)
- ok();
- else
- pln("FAILED: " + a + " != " + b);
- }
-
- private static final void p(String s) {
- System.out.print(s);
- }
-
- private static final void pln(String s) {
- System.out.println(s);
- }
-}
-
-// vim: et ts=4 sw=4
-
// Add your test here.
+ suite.addTest(new TestSuite(TestPatcher.class));
suite.addTest(new TestSuite(TestExceptionInStaticClassInitializer.class));
return suite;
JAVACCMD = $(JAVAC) -bootclasspath $(BOOTCLASSPATH)
EXTRA_DIST = \
- *.java
+ $(srcdir)/*.java
CLEANFILES = \
*.class
--- /dev/null
+/* tests/regression/bugzilla/TestPatcher.java
+
+ Copyright (C) 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
+
+ This file is part of CACAO.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+
+*/
+
+
+import junit.framework.*;
+import junit.textui.*;
+
+import java.io.*;
+
+public class TestPatcher extends TestCase {
+ public static void main(String[] args) {
+ TestRunner.run(suite());
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestPatcher.class);
+ }
+
+ static boolean doit = true;
+
+ final static int i = 123;
+ final static long l = 1234567890123L;
+ final static float f = 123.456F;
+ final static double d = 789.012;
+ final static Object o = new Object();
+
+ public void testNormal() {
+ invokestatic();
+ invokespecial();
+
+ getstatic();
+ putstatic();
+ putstaticconst();
+
+ getfield();
+ putfield();
+ putfieldconst();
+
+ newarray();
+ multianewarray();
+
+ checkcast();
+ _instanceof();
+
+ aastoreconst();
+ }
+
+ public void testWithoutClasses() {
+ // Delete all classes.
+ //new File("TestPatcher$invokestatic.class").delete();
+
+ invokestatic();
+ invokespecial();
+
+ getstatic();
+ putstatic();
+ putstaticconst();
+
+ getfield();
+ putfield();
+ putfieldconst();
+
+ newarray();
+ multianewarray();
+
+ checkcast();
+ _instanceof();
+
+ aastoreconst();
+ }
+
+ private void invokestatic() {
+ try {
+ if (doit)
+ invokestatic.sub();
+ } catch (NoClassDefFoundError e) {
+ fail(e.toString());
+ }
+ }
+
+ private void getstatic() {
+ try {
+ if (doit)
+ assertTrue(getstaticI.i + " != " + i, getstaticI.i == i);
+ } catch (NoClassDefFoundError e) {
+ fail(e.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(getstaticJ.l + " != " + l, getstaticJ.l == l);
+ } catch (NoClassDefFoundError e) {
+ fail(e.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(getstaticF.f + " != " + f, getstaticF.f == f);
+ } catch (NoClassDefFoundError e) {
+ fail(e.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(getstaticD.d + " != " + d, getstaticD.d == d);
+ } catch (NoClassDefFoundError e) {
+ fail(e.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(getstaticL.o + " != null", getstaticL.o == null);
+ } catch (NoClassDefFoundError e) {
+ fail(e.toString());
+ }
+ }
+
+ private void putstatic() {
+ try {
+ if (doit) {
+ putstaticI.i = i;
+ assertTrue(putstaticI.i + " != " + i, putstaticI.i == i);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticJ.l = l;
+ assertTrue(putstaticJ.l + " != " + l, putstaticJ.l == l);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticF.f = f;
+ assertTrue(putstaticF.f + " != " + f, putstaticF.f == f);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticD.d = d;
+ assertTrue(putstaticD.d + " != " + d, putstaticD.d == d);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+
+ try {
+ if (doit) {
+ putstaticL.o = o;
+ assertTrue(putstaticL.o + " != " + o, putstaticL.o == o);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void putstaticconst() {
+ try {
+ if (doit) {
+ putstaticconstI.i = i;
+ assertTrue(putstaticconstI.i + " != " + i, putstaticconstI.i == i);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstJ.l = l;
+ assertTrue(putstaticconstJ.l + " != " + l, putstaticconstJ.l == l);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstF.f = f;
+ assertTrue(putstaticconstF.f + " != " + f, putstaticconstF.f == f);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstD.d = d;
+ assertTrue(putstaticconstD.d + " != " + d, putstaticconstD.d == d);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstI.i = 0;
+ assertTrue(putstaticconstI.i + " != " + 0, putstaticconstI.i == 0);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstJ.l = 0L;
+ assertTrue(putstaticconstJ.l + " != " + 0L, putstaticconstJ.l == 0L);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstF.f = 0.0F;
+ assertTrue(putstaticconstF.f + " != " + 0.0F, putstaticconstF.f == 0.0F);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstD.d = 0.0;
+ assertTrue(putstaticconstD.d + " != " + 0.0, putstaticconstD.d == 0.0);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstL.o = null;
+ assertTrue(putstaticconstL.o + " != " + null, putstaticconstL.o == null);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putstaticconstC.c = putstaticconstC.class;
+ assertTrue(putstaticconstC.c + " != " + Class.forName("TestPatcher$putstaticconstC"), putstaticconstC.c == Class.forName("TestPatcher$putstaticconstC"));
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ } catch (ClassNotFoundException t) {
+ fail(t.toString());
+ }
+ }
+
+ private void getfield() {
+ try {
+ if (doit)
+ assertTrue(new getfieldI().i + " != " + i, new getfieldI().i == i);
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(new getfieldJ().l + " != " + l, new getfieldJ().l == l);
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(new getfieldF().f + " != " + f, new getfieldF().f == f);
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(new getfieldD().d + " != " + d, new getfieldD().d == d);
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit)
+ assertTrue(new getfieldL().o + " != " + null, new getfieldL().o == null);
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void putfield() {
+ try {
+ if (doit) {
+ TestPatcher.putfieldI pfi = new TestPatcher.putfieldI();
+ pfi.i = i;
+ assertTrue(pfi.i + " != " + i, pfi.i == i);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldJ pfj = new putfieldJ();
+ pfj.l = l;
+ assertTrue(pfj.l + " != " + l, pfj.l == l);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldF pff = new putfieldF();
+ pff.f = f;
+ assertTrue(pff.f + " != " + f, pff.f == f);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldD pfd = new putfieldD();
+ pfd.d = d;
+ assertTrue(pfd.d + " != " + d, pfd.d == d);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldL pfl = new putfieldL();
+ pfl.o = o;
+ assertTrue(pfl.o + " != " + o, pfl.o == o);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void putfieldconst() {
+ try {
+ if (doit) {
+ putfieldconstI pfci = new putfieldconstI();
+ pfci.i = i;
+ assertTrue(pfci.i + " != " + i, pfci.i == i);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstJ pfcj = new putfieldconstJ();
+ pfcj.l = l;
+ assertTrue(pfcj.l + " != " + l, pfcj.l == l);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstF pfcf = new putfieldconstF();
+ pfcf.f = f;
+ assertTrue(pfcf.f + " != " + f, pfcf.f == f);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstD pfcd = new putfieldconstD();
+ pfcd.d = d;
+ assertTrue(pfcd.d + " != " + d, pfcd.d == d);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstI pfci = new putfieldconstI();
+ pfci.i = 0;
+ assertTrue(pfci.i + " != " + 0, pfci.i == 0);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstJ pfcj = new putfieldconstJ();
+ pfcj.l = 0L;
+ assertTrue(pfcj.l + " != " + 0L, pfcj.l == 0L);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstF pfcf = new putfieldconstF();
+ pfcf.f = 0.0F;
+ assertTrue(pfcf.f + " != " + 0.0F, pfcf.f == 0.0F);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstD pfcd = new putfieldconstD();
+ pfcd.d = 0.0;
+ assertTrue(pfcd.d + " != " + 0.0, pfcd.d == 0.0);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstL pfcl = new putfieldconstL();
+ pfcl.o = null;
+ assertTrue(pfcl.o + " != " + null, pfcl.o == null);
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit) {
+ putfieldconstC pfcc = new putfieldconstC();
+ pfcc.c = putfieldconstC.class;
+ assertTrue(pfcc.c + " != " + Class.forName("TestPatcher$putfieldconstC"), pfcc.c == Class.forName("TestPatcher$putfieldconstC"));
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ } catch (ClassNotFoundException t) {
+ fail(t.toString());
+ }
+ }
+
+ private void newarray() {
+ try {
+ if (doit) {
+ newarray[] na = new newarray[1];
+ na[0] = null;
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void multianewarray() {
+ try {
+ if (doit) {
+ multianewarray[][] ma = new multianewarray[1][1];
+ ma[0][0] = null;
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void invokespecial() {
+ try {
+ if (doit)
+ new invokespecial();
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void checkcast() {
+ Object o = new Object();
+
+ // class
+ try {
+ if (doit) {
+ checkcastC cc = (checkcastC) o;
+ fail();
+ }
+ } catch (ClassCastException success) {
+ // This is OK.
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ // interface
+ try {
+ if (doit) {
+ checkcastI ci = (checkcastI) o;
+ fail();
+ }
+ } catch (ClassCastException success) {
+ // This is OK.
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+
+ // array
+ Object[] oa = new Object[1];
+
+ try {
+ if (doit) {
+ checkcastC[] cca = (checkcastC[]) oa;
+ fail();
+ }
+ } catch (ClassCastException e) {
+ // This is OK.
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void _instanceof() {
+ Object o = new Object();
+
+ try {
+ if (doit)
+ if (o instanceof instanceofC)
+ fail();
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+ try {
+ if (doit)
+ if (o instanceof instanceofI)
+ fail();
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+
+
+ // array
+ Object[] oa = new Object[1];
+
+ try {
+ if (doit)
+ if (oa instanceof instanceofC[])
+ fail();
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ }
+ }
+
+ private void aastoreconst() {
+ Class[] ca = new Class[1];
+
+ try {
+ if (doit) {
+ ca[0] = aastoreconstClass.class;
+
+ if (ca[0] == null)
+ fail();
+
+ assertTrue(ca[0] + " != " + Class.forName("TestPatcher$aastoreconstClass") , ca[0] == Class.forName("TestPatcher$aastoreconstClass"));
+ }
+ } catch (NoClassDefFoundError t) {
+ fail(t.toString());
+ } catch (ClassNotFoundException t) {
+ fail(t.toString());
+ }
+ }
+
+ static class invokestatic { static void sub() {} }
+ static class invokespecial { void invokespecial() {} }
+
+ static class getstaticI { static int i = TestPatcher.i; }
+ static class getstaticJ { static long l = TestPatcher.l; }
+ static class getstaticF { static float f = TestPatcher.f; }
+ static class getstaticD { static double d = TestPatcher.d; }
+ static class getstaticL { static Object o = null; }
+
+ static class putstaticI { static int i; }
+ static class putstaticJ { static long l; }
+ static class putstaticF { static float f; }
+ static class putstaticD { static double d; }
+ static class putstaticL { static Object o; }
+
+ static class putstaticconstI { static int i; }
+ static class putstaticconstJ { static long l; }
+ static class putstaticconstF { static float f; }
+ static class putstaticconstD { static double d; }
+ static class putstaticconstL { static Object o; }
+ static class putstaticconstC { static Class<putstaticconstC> c; }
+
+ static class getfieldI { int i = TestPatcher.i; }
+ static class getfieldJ { long l = TestPatcher.l; }
+ static class getfieldF { float f = TestPatcher.f; }
+ static class getfieldD { double d = TestPatcher.d; }
+ static class getfieldL { Object o = null; }
+
+ static class putfieldI { int i; }
+ static class putfieldJ { long l; }
+ static class putfieldF { float f; }
+ static class putfieldD { double d; }
+ static class putfieldL { Object o; }
+
+ static class putfieldconstI { int i; }
+ static class putfieldconstJ { long l; }
+ static class putfieldconstF { float f; }
+ static class putfieldconstD { double d; }
+ static class putfieldconstL { Object o; }
+ static class putfieldconstC { Class<putfieldconstC> c; }
+
+ static class newarray {}
+ static class multianewarray {}
+
+ static class instanceofC {}
+ static interface instanceofI {}
+
+ static class checkcastC {}
+ static interface checkcastI {}
+
+ static class aastoreconstClass {}
+}