Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic
In directory usw-pr-cvs1:/tmp/cvs-serv15265/src/core/com/mockobjects/dynamic
Modified Files:
Mock.java
Log Message:
Mock raises test failure if try to expect/setup an invalid method
Index: Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Mock.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Mock.java 6 Nov 2002 15:54:35 -0000 1.11
+++ Mock.java 7 Nov 2002 13:04:21 -0000 1.12
@@ -28,6 +28,7 @@
public static final Predicate[] NO_ARGS = new Predicate[0];
+ private Class[] _proxy_classes;
private Object _proxy;
private MethodMap methods = new MethodMap();
private boolean _strict = false;
@@ -69,6 +70,7 @@
* any number of interfaces.
*/
public Mock( Class[] interfaces_to_mock ) {
+ _proxy_classes = (Class[])interfaces_to_mock.clone();
_proxy = createInterface( interfaces_to_mock );
setupDefaultResult( byte.class, new Byte((byte)0) );
@@ -111,7 +113,8 @@
* The call to be mocked.
*/
public void setup( String method_name, MockCall call ) {
- methods.setupCall(method_name, call);
+ checkMethodName( method_name );
+ methods.setupCall( method_name, call );
}
/** Set up calls to <var>method</var> to return <var>result</var>,
@@ -163,7 +166,8 @@
* An object describing the expected call and mocking its behaviour.
*/
public void expect( String method_name, MockCall call ) {
- methods.expectCall(method_name, call);
+ checkMethodName( method_name );
+ methods.expectCall( method_name, call );
}
/** Expect a method call and return a result when it is called.
@@ -383,5 +387,26 @@
return Proxy.newProxyInstance( getClass().getClassLoader(),
interface_classes,
this );
+ }
+
+ private void checkMethodName( String method_name ) {
+ for( int i = 0; i < _proxy_classes.length; i++ ) {
+ if( hasMethod( _proxy_classes[i], method_name ) ) {
+ return;
+ }
+ }
+
+ fail("method " + method_name +
+ " is not defined by any of the mocked interfaces" );
+ }
+
+ private boolean hasMethod( Class c, String method_name ) {
+ Method[] methods = c.getMethods();
+ for( int i = 0; i < methods.length; i++ ) {
+ if( methods[i].getName().equals(method_name) ) {
+ return true;
+ }
+ }
+ return false;
}
}
|