From: Tim M. <ma...@us...> - 2003-04-14 08:46:33
|
Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic In directory sc8-pr-cvs1:/tmp/cvs-serv14578/src/core/com/mockobjects/dynamic Modified Files: Tag: DynamicMockExperiment CallSet.java Mock.java Callable.java Added Files: Tag: DynamicMockExperiment CallableAddable.java Log Message: Made CallSet a composite of Mock (with CallableAddable interface) made tests that were tricky much simpler, and first step to CallList --- NEW FILE: CallableAddable.java --- /* * Created on 14-Apr-2003 */ package com.mockobjects.dynamic; public interface CallableAddable extends Callable { public abstract void add(Callable call); } Index: CallSet.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Attic/CallSet.java,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -u -r1.1.2.6 -r1.1.2.7 --- CallSet.java 11 Apr 2003 15:38:18 -0000 1.1.2.6 +++ CallSet.java 14 Apr 2003 08:46:25 -0000 1.1.2.7 @@ -10,97 +10,64 @@ import junit.framework.*; + /** * @author dev */ -public class CallSet implements Callable { +public class CallSet implements Callable, CallableAddable { private List expectedCalls = new ArrayList(); - private CallFactory callFactory; - - + public CallSet() { - this( new DefaultCallFactory() ); - } - - public CallSet( CallFactory callFactory ) { - this.callFactory = callFactory; } - public Object call(Mock mock, String methodName, Object[] args) throws Throwable { + public Object call(Mock mock, String methodName, Object[] args) + throws Throwable { for (Iterator call = expectedCalls.iterator(); call.hasNext();) { - Callable element = (Callable) call.next(); - if(element.matches(methodName, args)) { + Callable element = (Callable)call.next(); + + if (element.matches(methodName, args)) { return element.call(mock, methodName, args); } } - + StringBuffer buf = new StringBuffer(); buf.append("Unexpected call to "); - buf.append( AssertMo.methodToString( methodName, args ) ); - buf.append( "\n" ); - buf.append( "Expected " ); - buf.append( getDescription() ); - throw new AssertionFailedError( buf.toString() ); + buf.append(AssertMo.methodToString(methodName, args)); + buf.append("\n"); + buf.append("Expected "); + buf.append(getDescription()); + throw new AssertionFailedError(buf.toString()); } - + public String getDescription() { - if( expectedCalls.isEmpty() ) { + if (expectedCalls.isEmpty()) { return "no methods"; } else { StringBuffer buf = new StringBuffer(); - - buf.append( "one of:\n" ); - for( Iterator i = expectedCalls.iterator(); i.hasNext(); ) { - buf.append( ((Callable)i.next()).getDescription() ); - buf.append( "\n" ); + + buf.append("one of:\n"); + + for (Iterator i = expectedCalls.iterator(); i.hasNext();) { + buf.append(((Callable)i.next()).getDescription()); + buf.append("\n"); } - - return buf.toString(); + + return buf.toString(); } } - - public void expect( String methodName, Constraint[] args) { - add( callFactory.createExpectedCall( callFactory.createCallMatch( methodName, args, callFactory.createVoidStub()))); - } - - public void expectAndReturn( String methodName, Object equalArg, Object result ) { - expectAndReturn(methodName, C.args(C.eq(equalArg)), result); - } - public void expectAndReturn( String methodName, Constraint[] args, Object result ) { - add( callFactory.createExpectedCall( callFactory.createCallMatch( methodName, args, callFactory.createReturnStub(result)))); - } - - public void expectAndThrow( String methodName, Constraint[] args, Throwable exception ) { - add( callFactory.createExpectedCall( callFactory.createCallMatch( methodName, args, callFactory.createThrowStub(exception)))); + public boolean matches(String methodName, Object[] args) { + throw new Error("not implemented"); } + public void verify() { for (Iterator call = expectedCalls.iterator(); call.hasNext();) { - Callable element = (Callable) call.next(); + Callable element = (Callable)call.next(); element.verify(); } - } public void add(Callable call) { expectedCalls.add(call); - } - - public void matchAndReturn( String methodName, Object equalArg, Object result ) { - matchAndReturn(methodName, C.args(C.eq(equalArg)), result); - } - - public void matchAndReturn( String methodName, Constraint[] args, Object result ) { - add( callFactory.createCallMatch( methodName, args, - callFactory.createReturnStub(result) ) ); - } - - public void matchAndThrow( String methodName, Constraint[] args, Throwable throwable ) { - add( callFactory.createCallMatch( methodName, args, - callFactory.createThrowStub(throwable) ) ); - } - - public boolean matches(String methodName, Object[] args) { - throw new Error("not implemented"); } } Index: Mock.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Mock.java,v retrieving revision 1.16.2.2 retrieving revision 1.16.2.3 diff -u -r1.16.2.2 -r1.16.2.3 --- Mock.java 7 Apr 2003 14:26:52 -0000 1.16.2.2 +++ Mock.java 14 Apr 2003 08:46:27 -0000 1.16.2.3 @@ -6,63 +6,100 @@ import java.lang.reflect.*; +import com.mockobjects.constraint.Constraint; + import junit.framework.*; /** * @author dev */ -public class Mock extends CallSet implements InvocationHandler { +public class Mock implements InvocationHandler { private String name; private Object proxy; - - - public Mock( Class mockedClass, String name) { + private CallFactory callFactory; + private CallableAddable callSet; + + public Mock(CallFactory callFactory, CallableAddable callableAddable, Class mockedClass, String name) { this.name = name; - this.proxy = Proxy.newProxyInstance( getClass().getClassLoader(), - new Class[] { mockedClass }, - this ); + this.callFactory = callFactory; + this.callSet = callableAddable; + this.proxy = Proxy.newProxyInstance(getClass().getClassLoader(), new Class[] { mockedClass }, this); } - - public Mock( Class mockedClass ) { - this( mockedClass, mockNameFromClass(mockedClass) ); + + public Mock(Class mockedClass, String name) { + this(new DefaultCallFactory(), new CallSet(), mockedClass, mockNameFromClass(mockedClass)); } - - public static String mockNameFromClass( Class c ) { + + public Mock(Class mockedClass) { + this(mockedClass, mockNameFromClass(mockedClass)); + } + + public static String mockNameFromClass(Class c) { String name = c.getName(); int dotIndex = name.lastIndexOf('.'); - if( dotIndex >= 0 ) { - return "mock" + name.substring(dotIndex + 1 ); + + if (dotIndex >= 0) { + return "mock" + name.substring(dotIndex + 1); } else { return "mock" + name; } } - + public String toString() { return name; } - + public Object proxy() { return proxy; } - public Object invoke( Object proxy, Method method, Object[] args ) - throws Throwable - { + public Object invoke(Object proxy, Method method, Object[] args) + throws Throwable { try { - return call( this, method.getName(), (args == null ? new Object[0] : args) ); - } - catch( AssertionFailedError ex ) { - throw new AssertionFailedError( name + ": " + ex.getMessage() ); + return callSet.call(this, method.getName(), ((args == null) ? new Object[0] : args)); + } catch (AssertionFailedError ex) { + throw new AssertionFailedError(name + ": " + ex.getMessage()); } } - + public void verify() { try { - super.verify(); - } - catch( AssertionFailedError ex ) { - throw new AssertionFailedError( name + ": " + ex.getMessage() ); + callSet.verify(); + } catch (AssertionFailedError ex) { + throw new AssertionFailedError(name + ": " + ex.getMessage()); } + } + + public void expect(String methodName, Object equalArg) { + expect(methodName, C.args(C.eq(equalArg))); + } + + public void expect(String methodName, Constraint[] args) { + callSet.add(callFactory.createExpectedCall(callFactory.createCallMatch(methodName, args, callFactory.createVoidStub()))); + } + + public void expectAndReturn(String methodName, Object equalArg, Object result) { + expectAndReturn(methodName, C.args(C.eq(equalArg)), result); + } + + public void expectAndReturn(String methodName, Constraint[] args, Object result) { + callSet.add(callFactory.createExpectedCall(callFactory.createCallMatch(methodName, args, callFactory.createReturnStub(result)))); + } + + public void expectAndThrow(String methodName, Constraint[] args, Throwable exception) { + callSet.add(callFactory.createExpectedCall(callFactory.createCallMatch(methodName, args, callFactory.createThrowStub(exception)))); + } + + public void matchAndReturn(String methodName, Object equalArg, Object result) { + matchAndReturn(methodName, C.args(C.eq(equalArg)), result); + } + + public void matchAndReturn(String methodName, Constraint[] args, Object result) { + callSet.add(callFactory.createCallMatch(methodName, args, callFactory.createReturnStub(result))); + } + + public void matchAndThrow(String methodName, Constraint[] args, Throwable throwable) { + callSet.add(callFactory.createCallMatch(methodName, args, callFactory.createThrowStub(throwable))); } } Index: Callable.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Attic/Callable.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- Callable.java 11 Apr 2003 13:18:46 -0000 1.1.2.1 +++ Callable.java 14 Apr 2003 08:46:27 -0000 1.1.2.2 @@ -8,7 +8,6 @@ public interface Callable extends Verifiable { String getDescription(); - Object call( Mock mock, String methodName, Object[] args ) throws Throwable; boolean matches(String methodName, Object[] args); |