blob: b2e884b8999af0474e6c9124207d56470a650901 [file] [log] [blame]
/*
* 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);
}
}
}