// ======================================================================== // Copyright (c) 1997 MortBay Consulting, Sydney // $Id: TestCase.java,v 1.15.2.6 2003/06/04 04:47:59 starksm Exp $ // ======================================================================== package org.mortbay.util; import java.io.InputStream; import java.util.Enumeration; import java.util.Vector; /*-------------------------------------------------------------------*/ /** Test Harness and report. * Test Harness for production of standard test reports: * *
* Test t1 = new Test("All_Pass");
* Test t2 = new Test("All_Fail");
*
* t1.check(true,"Boolean check that passes");
* t2.check(false,"Boolean check that fails");
* t1.checkEquals("Foo","Foo","Object comparison that passes");
* t2.checkEquals("Foo","Bar","Object comparison that fails");
* t1.checkEquals(1,1,"Long comparison that passes");
* t2.checkEquals(1,2,"Long comparison that fails");
* t1.checkEquals(1.1,1.1,"Double comparison that passes");
* t2.checkEquals(1.1,2.2,"Double comparison that fails");
* t1.checkEquals('a','a',"Char comparison that passes");
* t2.checkEquals('a','b',"Char comparison that fails");
*
* Test.report();
*
*
* @see org.mortbay.util.Code
* @version $Id: TestCase.java,v 1.15.2.6 2003/06/04 04:47:59 starksm Exp $
* @author Greg Wilkins
*/
public class TestCase
{
/*-------------------------------------------------------------------*/
private static Vector tests = new Vector();
private static final String fail = "FAIL";
private static final char[] spaces = " ".toCharArray();
static final String SelfFailTest =
"org.mortbay.util.TestCase all fail";
/*-------------------------------------------------------------------*/
private String testCase;
private StringBuffer reportBuf=new StringBuffer(512);
private boolean passed = true;
/*-------------------------------------------------------------------*/
/** TestCase constructor.
* @param testCase the name of the test case
*/
public TestCase(String testCase)
{
Code.debug("Constructed test case: "+testCase);
this.testCase=testCase;
tests.addElement(this);
}
/*-------------------------------------------------------------------*/
/** Check a boolean test case.
* @param b Boolean to check
* @param check Description of this check
*/
public void check(boolean b,String check)
{
if (!b)
{
reportBuf.append(testCase+" : "+check+" - ");
Frame frame = new Frame(1);
passed=false;
reportBuf.append(fail + " at " + frame);
reportBuf.append('\n');
reportBuf.append(spaces,0,testCase.length()+3);
reportBuf.append("check!=true");
Code.debug(check," FAILED");
}
reportBuf.append('\n');
}
/*-------------------------------------------------------------------*/
/** Check that string contains a substring.
* @return Index of substring
*/
public int checkContains(String string, String subString, String check)
{
return realCheckContains(string,0,subString,check);
}
/*-------------------------------------------------------------------*/
/** Check that string contains a substring.
* @return Index of substring
*/
public int checkContains(String string,
int offset,
String subString, String check)
{
return realCheckContains(string,offset,subString,check);
}
/*-------------------------------------------------------------------*/
/** Check that string contains a substring.
* @return Index of substring
*/
public int realCheckContains(String string,
int offset,
String subString, String check)
{
int index=-1;
if ((string==null && subString==null)
|| (string!=null && (subString==null ||
(index=string.indexOf(subString,offset))>=0)))
{
// do nothing
}
else
{
reportBuf.append(testCase+" : "+check+" - ");
Frame frame = new Frame(2);
passed=false;
reportBuf.append(fail + " at " + frame);
reportBuf.append('\n');
reportBuf.append(spaces,0,testCase.length()+3);
reportBuf.append('"' + subString + "\" not contained in \"" );
if (offset