/* * Copyright (c) 2003, 2005, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.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); } } }