1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package complexlib; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import java.lang.reflect.InvocationTargetException; 27*b1cdbd2cSJim Jagielski import java.lang.reflect.Method; 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski /** 30*b1cdbd2cSJim Jagielski * 31*b1cdbd2cSJim Jagielski * @author ll93751 32*b1cdbd2cSJim Jagielski * 33*b1cdbd2cSJim Jagielski * I have removed the assure(...) functions from ComplexTestCase due to the fact now I can 34*b1cdbd2cSJim Jagielski * use the functions every where and don't need to be a ComplexTestCase any longer. 35*b1cdbd2cSJim Jagielski */ 36*b1cdbd2cSJim Jagielski public class Assurance 37*b1cdbd2cSJim Jagielski { 38*b1cdbd2cSJim Jagielski public static final boolean CONTINUE = true; 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski /** State of the current test method **/ 41*b1cdbd2cSJim Jagielski protected boolean state = true; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski /** The message if the test did fail **/ 44*b1cdbd2cSJim Jagielski protected String message = null; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski /** 48*b1cdbd2cSJim Jagielski * Assure that s is true. 49*b1cdbd2cSJim Jagielski * This function generates "Assure failed." as standard message. 50*b1cdbd2cSJim Jagielski * @param s The condition that should be true. 51*b1cdbd2cSJim Jagielski */ assure(boolean s)52*b1cdbd2cSJim Jagielski protected void assure(boolean s) { 53*b1cdbd2cSJim Jagielski assure("Assure failed.", s, false); 54*b1cdbd2cSJim Jagielski } 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski /** 57*b1cdbd2cSJim Jagielski * Assure that s is true. 58*b1cdbd2cSJim Jagielski * The given message will be only evaluated, if s is false. 59*b1cdbd2cSJim Jagielski * @param msg The message that is evaluated. 60*b1cdbd2cSJim Jagielski * @param s The condition that should be true. 61*b1cdbd2cSJim Jagielski */ assure(String msg, boolean s)62*b1cdbd2cSJim Jagielski protected void assure(String msg, boolean s) { 63*b1cdbd2cSJim Jagielski assure(msg, s, false); 64*b1cdbd2cSJim Jagielski } 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski /** 67*b1cdbd2cSJim Jagielski * Assure that two boolean values are equal 68*b1cdbd2cSJim Jagielski * @param expected specifies the expected boolean value 69*b1cdbd2cSJim Jagielski * @param actual specifies the actual boolean value 70*b1cdbd2cSJim Jagielski */ assureEquals( boolean expected, boolean actual )71*b1cdbd2cSJim Jagielski protected void assureEquals( boolean expected, boolean actual ) { 72*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", expected, new Boolean( actual ), false ); 73*b1cdbd2cSJim Jagielski } 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski /** 76*b1cdbd2cSJim Jagielski * Assure that two boolean values are equal 77*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 78*b1cdbd2cSJim Jagielski * @param expected specifies the expected boolean value 79*b1cdbd2cSJim Jagielski * @param actual specifies the actual boolean value 80*b1cdbd2cSJim Jagielski */ assureEquals( String message, boolean expected, boolean actual )81*b1cdbd2cSJim Jagielski protected void assureEquals( String message, boolean expected, boolean actual ) { 82*b1cdbd2cSJim Jagielski assureEquals( message, expected, actual, false ); 83*b1cdbd2cSJim Jagielski } 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski /** 86*b1cdbd2cSJim Jagielski * Assure that two byte values are equal 87*b1cdbd2cSJim Jagielski * @param expected specifies the expected byte value 88*b1cdbd2cSJim Jagielski * @param actual specifies the actual byte value 89*b1cdbd2cSJim Jagielski */ assureEquals( byte expected, byte actual )90*b1cdbd2cSJim Jagielski protected void assureEquals( byte expected, byte actual ) { 91*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", new Byte( expected ), new Byte( actual ), false ); 92*b1cdbd2cSJim Jagielski } 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski /** 95*b1cdbd2cSJim Jagielski * Assure that two byte values are equal 96*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 97*b1cdbd2cSJim Jagielski * @param expected specifies the expected byte value 98*b1cdbd2cSJim Jagielski * @param actual specifies the actual byte value 99*b1cdbd2cSJim Jagielski */ assureEquals( String message, byte expected, byte actual )100*b1cdbd2cSJim Jagielski protected void assureEquals( String message, byte expected, byte actual ) { 101*b1cdbd2cSJim Jagielski assureEquals( message, new Byte( expected ), new Byte( actual ), false ); 102*b1cdbd2cSJim Jagielski } 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski /** 105*b1cdbd2cSJim Jagielski * Assure that two double values are equal 106*b1cdbd2cSJim Jagielski * @param expected specifies the expected double value 107*b1cdbd2cSJim Jagielski * @param actual specifies the actual double value 108*b1cdbd2cSJim Jagielski */ assureEquals( double expected, double actual )109*b1cdbd2cSJim Jagielski protected void assureEquals( double expected, double actual ) { 110*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", new Double( expected ), new Double( actual ), false ); 111*b1cdbd2cSJim Jagielski } 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski /** 114*b1cdbd2cSJim Jagielski * Assure that two double values are equal 115*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 116*b1cdbd2cSJim Jagielski * @param expected specifies the expected double value 117*b1cdbd2cSJim Jagielski * @param actual specifies the actual double value 118*b1cdbd2cSJim Jagielski */ assureEquals( String message, double expected, double actual )119*b1cdbd2cSJim Jagielski protected void assureEquals( String message, double expected, double actual ) { 120*b1cdbd2cSJim Jagielski assureEquals( message, new Double( expected ), new Double( actual ), false ); 121*b1cdbd2cSJim Jagielski } 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski /** 124*b1cdbd2cSJim Jagielski * Assure that two float values are equal 125*b1cdbd2cSJim Jagielski * @param expected specifies the expected float value 126*b1cdbd2cSJim Jagielski * @param actual specifies the actual float value 127*b1cdbd2cSJim Jagielski */ assureEquals( float expected, float actual )128*b1cdbd2cSJim Jagielski protected void assureEquals( float expected, float actual ) { 129*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", new Float( expected ), new Float( actual ), false ); 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski /** 133*b1cdbd2cSJim Jagielski * Assure that two float values are equal 134*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 135*b1cdbd2cSJim Jagielski * @param expected specifies the expected float value 136*b1cdbd2cSJim Jagielski * @param actual specifies the actual float value 137*b1cdbd2cSJim Jagielski */ assureEquals( String message, float expected, float actual )138*b1cdbd2cSJim Jagielski protected void assureEquals( String message, float expected, float actual ) { 139*b1cdbd2cSJim Jagielski assureEquals( message, new Float( expected ), new Float( actual ), false ); 140*b1cdbd2cSJim Jagielski } 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski /** 143*b1cdbd2cSJim Jagielski * Assure that two short values are equal 144*b1cdbd2cSJim Jagielski * @param expected specifies the expected short value 145*b1cdbd2cSJim Jagielski * @param actual specifies the actual short value 146*b1cdbd2cSJim Jagielski */ assureEquals( short expected, short actual )147*b1cdbd2cSJim Jagielski protected void assureEquals( short expected, short actual ) { 148*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", new Short( expected ), new Short( actual ), false ); 149*b1cdbd2cSJim Jagielski } 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski /** 152*b1cdbd2cSJim Jagielski * Assure that two short values are equal 153*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 154*b1cdbd2cSJim Jagielski * @param expected specifies the expected short value 155*b1cdbd2cSJim Jagielski * @param actual specifies the actual short value 156*b1cdbd2cSJim Jagielski */ assureEquals( String message, short expected, short actual )157*b1cdbd2cSJim Jagielski protected void assureEquals( String message, short expected, short actual ) { 158*b1cdbd2cSJim Jagielski assureEquals( message, new Short( expected ), new Short( actual ), false ); 159*b1cdbd2cSJim Jagielski } 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski /** 162*b1cdbd2cSJim Jagielski * Assure that two int values are equal 163*b1cdbd2cSJim Jagielski * @param expected specifies the expected int value 164*b1cdbd2cSJim Jagielski * @param actual specifies the actual int value 165*b1cdbd2cSJim Jagielski */ assureEquals( int expected, int actual )166*b1cdbd2cSJim Jagielski protected void assureEquals( int expected, int actual ) { 167*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", new Integer( expected ), new Integer( actual ), false ); 168*b1cdbd2cSJim Jagielski } 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski /** 171*b1cdbd2cSJim Jagielski * Assure that two int values are equal 172*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 173*b1cdbd2cSJim Jagielski * @param expected specifies the expected int value 174*b1cdbd2cSJim Jagielski * @param actual specifies the actual int value 175*b1cdbd2cSJim Jagielski */ assureEquals( String message, int expected, int actual )176*b1cdbd2cSJim Jagielski protected void assureEquals( String message, int expected, int actual ) { 177*b1cdbd2cSJim Jagielski assureEquals( message, new Integer( expected ), new Integer( actual ), false ); 178*b1cdbd2cSJim Jagielski } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski /** 181*b1cdbd2cSJim Jagielski * Assure that two long values are equal 182*b1cdbd2cSJim Jagielski * @param expected specifies the expected long value 183*b1cdbd2cSJim Jagielski * @param actual specifies the actual long value 184*b1cdbd2cSJim Jagielski */ assureEquals( long expected, long actual )185*b1cdbd2cSJim Jagielski protected void assureEquals( long expected, long actual ) { 186*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", new Long( expected ), new Long( actual ), false ); 187*b1cdbd2cSJim Jagielski } 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski /** 190*b1cdbd2cSJim Jagielski * Assure that two long values are equal 191*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 192*b1cdbd2cSJim Jagielski * @param expected specifies the expected long value 193*b1cdbd2cSJim Jagielski * @param actual specifies the actual long value 194*b1cdbd2cSJim Jagielski */ assureEquals( String message, long expected, long actual )195*b1cdbd2cSJim Jagielski protected void assureEquals( String message, long expected, long actual ) { 196*b1cdbd2cSJim Jagielski assureEquals( message, new Long( expected ), new Long( actual ), false ); 197*b1cdbd2cSJim Jagielski } 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski /** 200*b1cdbd2cSJim Jagielski * Assure that two string values are equal 201*b1cdbd2cSJim Jagielski * @param expected specifies the expected string value 202*b1cdbd2cSJim Jagielski * @param actual specifies the actual string value 203*b1cdbd2cSJim Jagielski */ assureEquals( String expected, String actual )204*b1cdbd2cSJim Jagielski protected void assureEquals( String expected, String actual ) { 205*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", expected, actual, false ); 206*b1cdbd2cSJim Jagielski } 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski /** 209*b1cdbd2cSJim Jagielski * Assure that two string values are equal 210*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 211*b1cdbd2cSJim Jagielski * @param expected specifies the expected string value 212*b1cdbd2cSJim Jagielski * @param actual specifies the actual string value 213*b1cdbd2cSJim Jagielski */ assureEquals( String message, String expected, String actual )214*b1cdbd2cSJim Jagielski protected void assureEquals( String message, String expected, String actual ) { 215*b1cdbd2cSJim Jagielski assureEquals( message, expected, actual, false ); 216*b1cdbd2cSJim Jagielski } 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski /** 219*b1cdbd2cSJim Jagielski * Assure that two object are equal 220*b1cdbd2cSJim Jagielski * @param expected specifies the expected object value 221*b1cdbd2cSJim Jagielski * @param actual specifies the actual object value 222*b1cdbd2cSJim Jagielski */ assureEquals( Object expected, Object actual )223*b1cdbd2cSJim Jagielski protected void assureEquals( Object expected, Object actual ) { 224*b1cdbd2cSJim Jagielski assureEquals( "Equality test failed", expected, actual, false ); 225*b1cdbd2cSJim Jagielski } 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski /** 228*b1cdbd2cSJim Jagielski * Assure that two objects are equal 229*b1cdbd2cSJim Jagielski * @param message the message to print when the equality test fails 230*b1cdbd2cSJim Jagielski * @param expected specifies the expected object value 231*b1cdbd2cSJim Jagielski * @param actual specifies the actual object value 232*b1cdbd2cSJim Jagielski */ assureEquals( String message, Object expected, Object actual )233*b1cdbd2cSJim Jagielski protected void assureEquals( String message, Object expected, Object actual ) { 234*b1cdbd2cSJim Jagielski assureEquals( message, expected, actual, false ); 235*b1cdbd2cSJim Jagielski } 236*b1cdbd2cSJim Jagielski 237*b1cdbd2cSJim Jagielski /** 238*b1cdbd2cSJim Jagielski * assures the two given sequences are of equal length, and have equal content 239*b1cdbd2cSJim Jagielski */ assureEquals( String i_message, T[] i_expected, T[] i_actual, boolean i_continue )240*b1cdbd2cSJim Jagielski public <T> void assureEquals( String i_message, T[] i_expected, T[] i_actual, boolean i_continue ) 241*b1cdbd2cSJim Jagielski { 242*b1cdbd2cSJim Jagielski if ( i_expected.length != i_actual.length ) 243*b1cdbd2cSJim Jagielski failed( i_message + ": expected element count: " + i_expected.length + ", actual element count: " + i_actual.length ); 244*b1cdbd2cSJim Jagielski for ( int i=0; i<i_expected.length; ++i ) 245*b1cdbd2cSJim Jagielski { 246*b1cdbd2cSJim Jagielski assureEquals( i_message + ": mismatch at element pos " + i, i_expected[i], i_actual[i], i_continue ); 247*b1cdbd2cSJim Jagielski } 248*b1cdbd2cSJim Jagielski } 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski /** 251*b1cdbd2cSJim Jagielski * assures the two given sequences are of equal length, and have equal content 252*b1cdbd2cSJim Jagielski */ assureEquals( String i_message, T[] i_expected, T[] i_actual )253*b1cdbd2cSJim Jagielski public <T> void assureEquals( String i_message, T[] i_expected, T[] i_actual ) 254*b1cdbd2cSJim Jagielski { 255*b1cdbd2cSJim Jagielski assureEquals( i_message, i_expected, i_actual, false ); 256*b1cdbd2cSJim Jagielski } 257*b1cdbd2cSJim Jagielski 258*b1cdbd2cSJim Jagielski /** invokes a given method on a given object, and assures a certain exception is caught 259*b1cdbd2cSJim Jagielski * @param _message is the message to print when the check fails 260*b1cdbd2cSJim Jagielski * @param _object is the object to invoke the method on 261*b1cdbd2cSJim Jagielski * @param _methodName is the name of the method to invoke 262*b1cdbd2cSJim Jagielski * @param _methodArgs are the arguments to pass to the method. 263*b1cdbd2cSJim Jagielski * @param _argClasses are the classes to assume for the arguments of the methods 264*b1cdbd2cSJim Jagielski * @param _expectedExceptionClass is the class of the exception to be caught. If this is null, 265*b1cdbd2cSJim Jagielski * it means that <em>no</em> exception must be throw by invoking the method. 266*b1cdbd2cSJim Jagielski */ assureException( final String _message, final Object _object, final String _methodName, final Class[] _argClasses, final Object[] _methodArgs, final Class _expectedExceptionClass )267*b1cdbd2cSJim Jagielski protected void assureException( final String _message, final Object _object, final String _methodName, 268*b1cdbd2cSJim Jagielski final Class[] _argClasses, final Object[] _methodArgs, final Class _expectedExceptionClass ) 269*b1cdbd2cSJim Jagielski { 270*b1cdbd2cSJim Jagielski Class objectClass = _object.getClass(); 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski boolean noExceptionAllowed = ( _expectedExceptionClass == null ); 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski boolean caughtExpected = noExceptionAllowed ? true : false; 275*b1cdbd2cSJim Jagielski try 276*b1cdbd2cSJim Jagielski { 277*b1cdbd2cSJim Jagielski Method method = objectClass.getMethod( _methodName, _argClasses ); 278*b1cdbd2cSJim Jagielski method.invoke(_object, _methodArgs ); 279*b1cdbd2cSJim Jagielski } 280*b1cdbd2cSJim Jagielski catch ( InvocationTargetException e ) 281*b1cdbd2cSJim Jagielski { 282*b1cdbd2cSJim Jagielski caughtExpected = noExceptionAllowed 283*b1cdbd2cSJim Jagielski ? false 284*b1cdbd2cSJim Jagielski : ( e.getTargetException().getClass().equals( _expectedExceptionClass ) ); 285*b1cdbd2cSJim Jagielski } 286*b1cdbd2cSJim Jagielski catch( Exception e ) 287*b1cdbd2cSJim Jagielski { 288*b1cdbd2cSJim Jagielski caughtExpected = false; 289*b1cdbd2cSJim Jagielski } 290*b1cdbd2cSJim Jagielski 291*b1cdbd2cSJim Jagielski assure( _message, caughtExpected ); 292*b1cdbd2cSJim Jagielski } 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski /** invokes a given method on a given object, and assures a certain exception is caught 295*b1cdbd2cSJim Jagielski * @param _message is the message to print when the check fails 296*b1cdbd2cSJim Jagielski * @param _object is the object to invoke the method on 297*b1cdbd2cSJim Jagielski * @param _methodName is the name of the method to invoke 298*b1cdbd2cSJim Jagielski * @param _methodArgs are the arguments to pass to the method. Those implicitly define 299*b1cdbd2cSJim Jagielski * the classes of the arguments of the method which is called. 300*b1cdbd2cSJim Jagielski * @param _expectedExceptionClass is the class of the exception to be caught. If this is null, 301*b1cdbd2cSJim Jagielski * it means that <em>no</em> exception must be throw by invoking the method. 302*b1cdbd2cSJim Jagielski */ assureException( final String _message, final Object _object, final String _methodName, final Object[] _methodArgs, final Class _expectedExceptionClass )303*b1cdbd2cSJim Jagielski protected void assureException( final String _message, final Object _object, final String _methodName, 304*b1cdbd2cSJim Jagielski final Object[] _methodArgs, final Class _expectedExceptionClass ) 305*b1cdbd2cSJim Jagielski { 306*b1cdbd2cSJim Jagielski Class[] argClasses = new Class[ _methodArgs.length ]; 307*b1cdbd2cSJim Jagielski for ( int i=0; i<_methodArgs.length; ++i ) 308*b1cdbd2cSJim Jagielski argClasses[i] = _methodArgs[i].getClass(); 309*b1cdbd2cSJim Jagielski assureException( _message, _object, _methodName, argClasses, _methodArgs, _expectedExceptionClass ); 310*b1cdbd2cSJim Jagielski } 311*b1cdbd2cSJim Jagielski 312*b1cdbd2cSJim Jagielski /** invokes a given method on a given object, and assures a certain exception is caught 313*b1cdbd2cSJim Jagielski * @param _object is the object to invoke the method on 314*b1cdbd2cSJim Jagielski * @param _methodName is the name of the method to invoke 315*b1cdbd2cSJim Jagielski * @param _methodArgs are the arguments to pass to the method. Those implicitly define 316*b1cdbd2cSJim Jagielski * the classes of the arguments of the method which is called. 317*b1cdbd2cSJim Jagielski * @param _expectedExceptionClass is the class of the exception to be caught. If this is null, 318*b1cdbd2cSJim Jagielski * it means that <em>no</em> exception must be throw by invoking the method. 319*b1cdbd2cSJim Jagielski */ assureException( final Object _object, final String _methodName, final Object[] _methodArgs, final Class _expectedExceptionClass )320*b1cdbd2cSJim Jagielski protected void assureException( final Object _object, final String _methodName, final Object[] _methodArgs, 321*b1cdbd2cSJim Jagielski final Class _expectedExceptionClass ) 322*b1cdbd2cSJim Jagielski { 323*b1cdbd2cSJim Jagielski assureException( 324*b1cdbd2cSJim Jagielski "did not catch the expected exception (" + 325*b1cdbd2cSJim Jagielski ( ( _expectedExceptionClass == null ) ? "none" : _expectedExceptionClass.getName() ) + 326*b1cdbd2cSJim Jagielski ") while calling " + _object.getClass().getName() + "." + _methodName, 327*b1cdbd2cSJim Jagielski _object, _methodName, _methodArgs, _expectedExceptionClass ); 328*b1cdbd2cSJim Jagielski } 329*b1cdbd2cSJim Jagielski 330*b1cdbd2cSJim Jagielski /** invokes a given method on a given object, and assures a certain exception is caught 331*b1cdbd2cSJim Jagielski * @param _object is the object to invoke the method on 332*b1cdbd2cSJim Jagielski * @param _methodName is the name of the method to invoke 333*b1cdbd2cSJim Jagielski * @param _methodArgs are the arguments to pass to the method 334*b1cdbd2cSJim Jagielski * @param _argClasses are the classes to assume for the arguments of the methods 335*b1cdbd2cSJim Jagielski * @param _expectedExceptionClass is the class of the exception to be caught. If this is null, 336*b1cdbd2cSJim Jagielski * it means that <em>no</em> exception must be throw by invoking the method. 337*b1cdbd2cSJim Jagielski */ assureException( final Object _object, final String _methodName, final Class[] _argClasses, final Object[] _methodArgs, final Class _expectedExceptionClass )338*b1cdbd2cSJim Jagielski protected void assureException( final Object _object, final String _methodName, final Class[] _argClasses, 339*b1cdbd2cSJim Jagielski final Object[] _methodArgs, final Class _expectedExceptionClass ) 340*b1cdbd2cSJim Jagielski { 341*b1cdbd2cSJim Jagielski assureException( 342*b1cdbd2cSJim Jagielski "did not catch the expected exception (" + 343*b1cdbd2cSJim Jagielski ( ( _expectedExceptionClass == null ) ? "none" : _expectedExceptionClass.getName() ) + 344*b1cdbd2cSJim Jagielski ") while calling " + _object.getClass().getName() + "." + _methodName, 345*b1cdbd2cSJim Jagielski _object, _methodName, _argClasses, _methodArgs, _expectedExceptionClass ); 346*b1cdbd2cSJim Jagielski } 347*b1cdbd2cSJim Jagielski 348*b1cdbd2cSJim Jagielski /** 349*b1cdbd2cSJim Jagielski * Mark the currently executed method as failed. 350*b1cdbd2cSJim Jagielski * This function generates "Test did fail." as standard message. 351*b1cdbd2cSJim Jagielski */ failed()352*b1cdbd2cSJim Jagielski protected void failed() { 353*b1cdbd2cSJim Jagielski assure("Test did fail.", false, false); 354*b1cdbd2cSJim Jagielski } 355*b1cdbd2cSJim Jagielski 356*b1cdbd2cSJim Jagielski /** 357*b1cdbd2cSJim Jagielski * Mark the currently executed method as failed. 358*b1cdbd2cSJim Jagielski * with the given message. 359*b1cdbd2cSJim Jagielski * @param msg The message of the failure. 360*b1cdbd2cSJim Jagielski */ failed(String msg)361*b1cdbd2cSJim Jagielski protected void failed(String msg) { 362*b1cdbd2cSJim Jagielski assure(msg, false, false); 363*b1cdbd2cSJim Jagielski } 364*b1cdbd2cSJim Jagielski 365*b1cdbd2cSJim Jagielski /** 366*b1cdbd2cSJim Jagielski * Assure that s is true. 367*b1cdbd2cSJim Jagielski * The given message will be only evaluated, if s is false. 368*b1cdbd2cSJim Jagielski * Normally, assure() leaves the current test method, and the next one 369*b1cdbd2cSJim Jagielski * is executed. With the parameter 'cont' set to true, the current test 370*b1cdbd2cSJim Jagielski * method will continue.<br> 371*b1cdbd2cSJim Jagielski * The current method will of course marked as failed. 372*b1cdbd2cSJim Jagielski * @param msg The message that is evaluated. 373*b1cdbd2cSJim Jagielski * @param s The condition that should be true. 374*b1cdbd2cSJim Jagielski * @param cont Continue with test method, even if s is false. 375*b1cdbd2cSJim Jagielski */ assure(String msg, boolean s, boolean cont)376*b1cdbd2cSJim Jagielski protected void assure(String msg, boolean s, boolean cont) { 377*b1cdbd2cSJim Jagielski state &= s; 378*b1cdbd2cSJim Jagielski if (!s) { 379*b1cdbd2cSJim Jagielski message += msg + "\r\n"; 380*b1cdbd2cSJim Jagielski // log.println(msg); 381*b1cdbd2cSJim Jagielski if (!cont) { 382*b1cdbd2cSJim Jagielski throw new AssureException(msg); 383*b1cdbd2cSJim Jagielski } 384*b1cdbd2cSJim Jagielski } 385*b1cdbd2cSJim Jagielski } 386*b1cdbd2cSJim Jagielski assureEquals( String message, Object expected, Object actual, boolean cont )387*b1cdbd2cSJim Jagielski protected void assureEquals( String message, Object expected, Object actual, boolean cont ) { 388*b1cdbd2cSJim Jagielski assure( message + " (expected: " + expected.toString() + ", actual: " + actual.toString() + ")", 389*b1cdbd2cSJim Jagielski expected.equals( actual ), cont ); 390*b1cdbd2cSJim Jagielski } 391*b1cdbd2cSJim Jagielski 392*b1cdbd2cSJim Jagielski /** 393*b1cdbd2cSJim Jagielski * Mark the currently executed method as failed. 394*b1cdbd2cSJim Jagielski * with the given message. 395*b1cdbd2cSJim Jagielski * The given message will be only evaluated, if s is false. 396*b1cdbd2cSJim Jagielski * With the parameter 'cont' set to true, the current test 397*b1cdbd2cSJim Jagielski * method will continue.<br> 398*b1cdbd2cSJim Jagielski * The current method will of course marked as failed. 399*b1cdbd2cSJim Jagielski * @param msg The message that is evaluated. 400*b1cdbd2cSJim Jagielski * @param cont Continue with test method, even if s is false. 401*b1cdbd2cSJim Jagielski */ failed(String msg, boolean cont)402*b1cdbd2cSJim Jagielski protected void failed(String msg, boolean cont) { 403*b1cdbd2cSJim Jagielski assure(msg, false, cont); 404*b1cdbd2cSJim Jagielski } 405*b1cdbd2cSJim Jagielski 406*b1cdbd2cSJim Jagielski /** 407*b1cdbd2cSJim Jagielski * @deprecated 408*b1cdbd2cSJim Jagielski */ 409*b1cdbd2cSJim Jagielski // protected void addResult(String message, boolean state) { 410*b1cdbd2cSJim Jagielski // String msg = message + " - " + state; 411*b1cdbd2cSJim Jagielski // this.state &= state; 412*b1cdbd2cSJim Jagielski // this.message += msg + "\r\n"; 413*b1cdbd2cSJim Jagielski // log.println(msg); 414*b1cdbd2cSJim Jagielski // } 415*b1cdbd2cSJim Jagielski 416*b1cdbd2cSJim Jagielski public class AssureException extends RuntimeException { 417*b1cdbd2cSJim Jagielski AssureException(String msg)418*b1cdbd2cSJim Jagielski public AssureException(String msg) { 419*b1cdbd2cSJim Jagielski super(msg); 420*b1cdbd2cSJim Jagielski } 421*b1cdbd2cSJim Jagielski } 422*b1cdbd2cSJim Jagielski } 423