jdk/test/java/lang/instrument/ATestCaseScaffold.java
changeset 2 90ce3da70b43
child 5506 202f599c92aa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/instrument/ATestCaseScaffold.java	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,186 @@
+/*
+ * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * Copyright 2003 Wily Technology, Inc.
+ */
+
+/**
+ *  This class serves as a bridge between the Wily JUnit-style tests and the
+ *  Sun test framework.
+ *
+ *  This is a replacement for the JUnit TestCase base class. Provides surrogate
+ *  functionality for the setup/teardown calls, and for all the verification and
+ *  assertion services.
+ *
+ *  The Sun framework relies on each test case being a separate class with a separate main,
+ *  which throws if the test fails and does not throw if the test succeeds.
+ */
+
+
+public abstract class ATestCaseScaffold {
+    private String      fName;
+    private boolean     fVerbose;
+
+
+    protected
+    ATestCaseScaffold(String name) {
+        fName = name;
+        fVerbose = false;
+    }
+
+    public final void
+    runTest()
+        throws Throwable {
+        Throwable toRethrow = null;
+
+        setUp();
+
+        try {
+            doRunTest();
+        }
+        finally {
+            tearDown();
+        }
+
+    }
+
+    protected void
+    setUp()
+        throws Exception {
+    }
+
+    protected void
+    tearDown()
+        throws Exception {
+    }
+
+    protected abstract void
+    doRunTest()
+        throws Throwable;
+
+    /**
+     * Be verbose: print out what happens after this
+     */
+    public void
+    beVerbose()
+    {
+        fVerbose = true;
+    }
+
+    /**
+     * Print a string, if and only if verbose printing is enabled.
+     */
+    public void
+    verbosePrint(String message)
+    {
+        if (fVerbose)
+        {
+            System.out.println("Debugging message: " + message);
+        }
+    }
+
+    /*
+     *  Replacement verification methods
+     *  Shaped the same as the JUnit ones to make reusing the JUnit test possible
+     *  Didn't implement them all, only the ones our existing tests use.
+     */
+
+    public final void
+    fail() {
+        throw new TestCaseScaffoldException();
+    }
+
+    public final void
+    fail(String message) {
+        throw new TestCaseScaffoldException(message);
+    }
+
+    public final void
+    assertTrue(boolean condition) {
+        if ( !condition ) {
+            fail();
+        }
+    }
+
+    public final void
+    assertTrue(String message, boolean condition) {
+        if ( !condition ) {
+            fail(message);
+        }
+    }
+
+    public final void
+    assertNotNull(Object o) {
+        assertTrue(o != null);
+    }
+
+    public final void
+    assertNotNull(String message, Object o) {
+        assertTrue(message, o != null);
+    }
+
+    public final void
+    assertEquals(String message, Object expected, Object actual) {
+        if ( (expected == null) && (actual == null) ) {
+            return;
+        }
+        else if ( (expected != null) && (expected.equals(actual)) ) {
+            return;
+        }
+        else {
+            throw new TestCaseScaffoldException(message + ". Expected: '" + expected +
+                                                "'. Actual: '" + actual + "'.");
+        }
+    }
+
+    public final void
+    assertEquals(Object expected, Object actual) {
+        assertEquals(null, expected, actual);
+    }
+
+    public final void
+    assertEquals(String message, int expected, int actual) {
+        assertEquals(message, new Integer(expected), new Integer(actual));
+    }
+
+    public final void
+    assertEquals(int expected, int actual) {
+        assertEquals("Expected equality", expected, actual);
+    }
+
+    public final static class
+    TestCaseScaffoldException extends RuntimeException {
+        public
+        TestCaseScaffoldException() {
+            super();
+        }
+
+        public
+        TestCaseScaffoldException(String m) {
+            super(m);
+        }
+
+    }
+
+}