From: Nat P. <np...@us...> - 2002-11-06 18:57:26
|
Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic In directory usw-pr-cvs1:/tmp/cvs-serv28820/src/core/com/mockobjects/dynamic Modified Files: MockReturnCall.java MockVoidCall.java MockThrowCall.java Added Files: AbstractMockCall.java Log Message: Refactored MockCall class hierarchy: Extracted AbstractMockCall class from MockVoidCall class Made concrete MockCall classes derive from AbstractMockCall --- NEW FILE: AbstractMockCall.java --- /* Copyright (c) 2002 Nat Pryce. All rights reserved. * * Created on February 10, 2002, 11:09 PM */ package com.mockobjects.dynamic; /** An mocked call to a method of that has a void result. */ public abstract class AbstractMockCall extends junit.framework.Assert implements MockCall { /** A constant that indicates that the <code>MockVoidCall</code> accepts * any arguments, that is, that the call does not check the arguments * passed to it. */ static final Predicate[] ANY_ARGS = null; private Predicate[] _expected_args; /** Constructs an <code>MockVoidCall</code> that accepts any arguments. * The name of the expected method. */ public AbstractMockCall() { this( ANY_ARGS ); } /** Constructs a <code>MockVoidCall</code> that checks its arguments. * * @param expected_args * Predicates that define the valid arguments of the method. */ public AbstractMockCall( Predicate[] expected_args ) { _expected_args = expected_args; } public Object call( Object[] args ) throws Throwable { if( isTestingArguments() ) { checkArguments( args ); } return null; } private boolean isTestingArguments() { return _expected_args != null; } private void checkArguments( Object[] args ) { int arg_count = (args == null) ? 0 : args.length; assertEquals( "wrong number of arguments", getArgumentCount(), arg_count ); for( int i = 0; i < arg_count; i++ ) { checkArgument( i, _expected_args[i], args[i]); } } private int getArgumentCount() { return _expected_args.length; } private void checkArgument( int i, Predicate expectedArg, Object arg ) { assertTrue("argument " + (i+1) + "\n" + "expected " + expectedArg + "\n" + " was " + arg + "", expectedArg.eval(arg) ); } public String describeArgument( int n ) { if( _expected_args == null ) { return "anything"; } else { return _expected_args[n].toString(); } } } Index: MockReturnCall.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/MockReturnCall.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MockReturnCall.java 31 Oct 2002 17:03:45 -0000 1.1 +++ MockReturnCall.java 6 Nov 2002 18:57:21 -0000 1.2 @@ -9,7 +9,8 @@ /** An mocked call to a method that returns a result. */ -class MockReturnCall extends MockVoidCall +class MockReturnCall + extends AbstractMockCall { private Object _result; Index: MockVoidCall.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/MockVoidCall.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- MockVoidCall.java 5 Nov 2002 16:03:40 -0000 1.2 +++ MockVoidCall.java 6 Nov 2002 18:57:21 -0000 1.3 @@ -8,74 +8,20 @@ /** An mocked call to a method of that has a void result. */ public class MockVoidCall - extends junit.framework.Assert - implements MockCall + extends AbstractMockCall { - /** A constant that indicates that the <code>MockVoidCall</code> accepts - * any arguments, that is, that the call does not check the arguments - * passed to it. - */ - static final Predicate[] ANY_ARGS = null; - - - private Predicate[] _expected_args; - - - /** Constructs an <code>MockVoidCall</code> that accepts any arguments. - * The name of the expected method. - */ public MockVoidCall() { this( ANY_ARGS ); } - /** Constructs a <code>MockVoidCall</code> that checks its arguments. - * - * @param expected_args - * Predicates that define the valid arguments of the method. - */ public MockVoidCall( Predicate[] expected_args ) { - _expected_args = expected_args; + super( expected_args ); } - public Object call( Object[] args ) - throws Throwable + public Object call( Object[] args ) + throws Throwable { - if( isTestingArguments() ) { - checkArguments( args ); - } + super.call(args); return Mock.VOID; - } - - private boolean isTestingArguments() { - return _expected_args != null; - } - - private void checkArguments( Object[] args ) - { - int arg_count = (args == null) ? 0 : args.length; - assertEquals( "wrong number of arguments", getArgumentCount(), arg_count ); - - for( int i = 0; i < arg_count; i++ ) { - checkArgument( i, _expected_args[i], args[i]); - } - } - - private int getArgumentCount() { - return _expected_args.length; - } - - private void checkArgument( int i, Predicate expectedArg, Object arg ) { - assertTrue("argument " + (i+1) + "\n" + - "expected " + expectedArg + "\n" + - " was " + arg + "", - expectedArg.eval(arg) ); - } - - public String describeArgument( int n ) { - if( _expected_args == null ) { - return "anything"; - } else { - return _expected_args[n].toString(); - } } } Index: MockThrowCall.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/MockThrowCall.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MockThrowCall.java 31 Oct 2002 17:03:45 -0000 1.1 +++ MockThrowCall.java 6 Nov 2002 18:57:21 -0000 1.2 @@ -9,7 +9,7 @@ /** A mocked call to a method results in a thrown exception. */ class MockThrowCall - extends MockVoidCall + extends AbstractMockCall { private Throwable _exception; |