Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic In directory sc8-pr-cvs1:/tmp/cvs-serv12659/core/com/mockobjects/dynamic Modified Files: Tag: MethodMatcherAlternative DefaultCallFactory.java C.java CallFactory.java CallSignature.java Mock.java Log Message: Little experiment to do Mocks a different way. Broken tests - and nothing interesting yet. Index: DefaultCallFactory.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/DefaultCallFactory.java,v retrieving revision 1.5 retrieving revision 1.5.4.1 diff -u -r1.5 -r1.5.4.1 --- DefaultCallFactory.java 20 May 2003 00:05:24 -0000 1.5 +++ DefaultCallFactory.java 6 Jul 2003 14:21:28 -0000 1.5.4.1 @@ -1,25 +1,23 @@ package com.mockobjects.dynamic; -public class DefaultCallFactory implements CallFactory { - - public Callable createReturnStub(Object result) { - return new ReturnStub(result); - } +import com.mockobjects.constraint.Constraint; - public Callable createThrowStub( Throwable exception ) { - return new ThrowStub(exception); - } +public class DefaultCallFactory implements CallFactory { public Callable createCallExpectation(Callable call) { - return new CallOnceExpectation(call); + return new CallOnceExpectation(call); + } + + public Callable createMethodCallWithException(String methodName, Constraint[] constraints, Throwable ex) { + return new CallSignature( methodName, constraints, new ThrowStub(ex)); } - public Callable createCallSignature(String methodName, ConstraintMatcher constraints, Callable call) { - return new CallSignature( methodName, constraints, call ); + public Callable createMethodCallWithReturn(String methodName, Constraint[] constraints, Object result) { + return new CallSignature( methodName, constraints, new ReturnStub(result)); } - public Callable createVoidStub() { - return new VoidStub(); + public Callable createMethodCallWithVoid(String methodName, Constraint[] constraints) { + return new CallSignature( methodName, constraints, new VoidStub()); } } Index: C.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/C.java,v retrieving revision 1.3 retrieving revision 1.3.4.1 diff -u -r1.3 -r1.3.4.1 --- C.java 1 Jun 2003 11:40:45 -0000 1.3 +++ C.java 6 Jul 2003 14:21:28 -0000 1.3.4.1 @@ -19,8 +19,8 @@ public static final Constraint IS_ZERO = eq(new Integer(0)); public static final Constraint IS_NOT_ZERO = not(IS_ZERO); - public static final ConstraintMatcher NO_ARGS = new FullConstraintMatcher(new Constraint[0]); - public static final ConstraintMatcher ANY_ARGS = new AnyConstraintMatcher(); + public static final Constraint[] NO_ARGS = new Constraint[0]; + public static final Constraint[] ANY_ARGS = new Constraint[0]; public static Constraint same( Object o ) { return new IsSame(o); @@ -30,15 +30,15 @@ return new IsEqual(o); } - public static ConstraintMatcher eq( Object arg0, Object arg1 ) { + public static Constraint[] eq( Object arg0, Object arg1 ) { return args(eq(arg0), eq(arg1)); } - public static ConstraintMatcher eq( Object arg0, Object arg1, Object arg2 ) { + public static Constraint[] eq( Object arg0, Object arg1, Object arg2 ) { return args(eq(arg0), eq(arg1), eq(arg2)); } - public static ConstraintMatcher eq( Object arg0, Object arg1, Object arg2, Object arg3 ) { + public static Constraint[] eq( Object arg0, Object arg1, Object arg2, Object arg3 ) { return args(eq(arg0), eq(arg1), eq(arg2), eq(arg3)); } @@ -107,32 +107,32 @@ /* Helper methods for succinctly constructing Constraint arrays */ - public static ConstraintMatcher args() { + public static Constraint[] args() { return NO_ARGS; } - public static ConstraintMatcher args(Constraint p) { - return new FullConstraintMatcher(new Constraint[]{p}); + public static Constraint[] args(Constraint p) { + return new Constraint[]{p}; } - public static ConstraintMatcher args(Constraint p1, Constraint p2) { - return new FullConstraintMatcher(new Constraint[]{p1, p2}); + public static Constraint[] args(Constraint p1, Constraint p2) { + return new Constraint[]{p1, p2}; } - public static ConstraintMatcher args(Constraint p1, Constraint p2, Constraint p3) { - return new FullConstraintMatcher(new Constraint[]{p1, p2, p3}); + public static Constraint[] args(Constraint p1, Constraint p2, Constraint p3) { + return new Constraint[]{p1, p2, p3}; } - public static ConstraintMatcher args(Constraint p1, Constraint p2, Constraint p3, Constraint p4) { - return new FullConstraintMatcher(new Constraint[]{p1, p2, p3, p4}); + public static Constraint[] args(Constraint p1, Constraint p2, Constraint p3, Constraint p4) { + return new Constraint[]{p1, p2, p3, p4}; } - public static ConstraintMatcher anyArgs( int argCount) { + public static Constraint[] anyArgs( int argCount) { Constraint[] constraints = new Constraint[argCount]; for (int i = 0; i < constraints.length; i++) { constraints[i] = new IsAnything(); } - return new FullConstraintMatcher(constraints); + return constraints; } } Index: CallFactory.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Attic/CallFactory.java,v retrieving revision 1.4 retrieving revision 1.4.4.1 diff -u -r1.4 -r1.4.4.1 --- CallFactory.java 19 May 2003 23:56:23 -0000 1.4 +++ CallFactory.java 6 Jul 2003 14:21:28 -0000 1.4.4.1 @@ -1,9 +1,11 @@ package com.mockobjects.dynamic; +import com.mockobjects.constraint.Constraint; + public interface CallFactory { - Callable createReturnStub( Object result ); - Callable createThrowStub( Throwable throwable ); - Callable createVoidStub(); Callable createCallExpectation( Callable call ); - Callable createCallSignature( String methodName, ConstraintMatcher constraints, Callable call ); + + Callable createMethodCallWithVoid(String methodName, Constraint[] constraints); + Callable createMethodCallWithException(String methodName, Constraint[] constraints, Throwable ex); + Callable createMethodCallWithReturn(String methodName, Constraint[] constraints, Object result); } Index: CallSignature.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/CallSignature.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- CallSignature.java 5 Jul 2003 15:15:54 -0000 1.3 +++ CallSignature.java 6 Jul 2003 14:21:29 -0000 1.3.2.1 @@ -1,14 +1,16 @@ package com.mockobjects.dynamic; +import com.mockobjects.constraint.Constraint; + import junit.framework.Assert; public class CallSignature extends Assert implements Callable { private String methodName; - private ConstraintMatcher constraints; + private Constraint[] constraints; private Callable delegate; - public CallSignature( String methodName, ConstraintMatcher constraints, Callable delegate ) { + public CallSignature( String methodName, Constraint[] constraints, Callable delegate ) { this.methodName = methodName; this.constraints = constraints; this.delegate = delegate; @@ -24,12 +26,22 @@ delegate.verify(); } + private boolean matches(Constraint[] constraints, Object[] args) { + + if( args.length != constraints.length ) return false; + + for (int i = 0; i < args.length; i++) { + if( !constraints[i].eval(args[i]) ) return false; + } + return true; + } + public boolean matches(ActiveCall activeCall) { - return this.methodName.equals(activeCall.getMethodName()) && constraints.matches(activeCall.args); + return this.methodName.equals(activeCall.getMethodName()) && matches(constraints, activeCall.args); } public String getDescription() { - return DynamicUtil.methodToString(methodName, constraints.getConstraints()); + return DynamicUtil.methodToString(methodName, constraints); } // Implemented to aid visualisation in an IDE debugger Index: Mock.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Mock.java,v retrieving revision 1.25 retrieving revision 1.25.2.1 diff -u -r1.25 -r1.25.2.1 --- Mock.java 5 Jul 2003 15:15:54 -0000 1.25 +++ Mock.java 6 Jul 2003 14:21:29 -0000 1.25.2.1 @@ -49,13 +49,13 @@ } } - private ConstraintMatcher createConstraintMatcher(Object constraintArg) { + private Constraint[] createConstraints(Object constraintArg) { // Can't overload this method as callee had an Object parameter, and java // doesn't do a secondary dispatch on the true underlying type if (constraintArg instanceof Constraint[]) { // to support possible legacy usage of new Contraint[] {...} - return new FullConstraintMatcher((Constraint[])constraintArg); + return (Constraint[])constraintArg; } else if (constraintArg instanceof Constraint) { // to support usage of C.lt(5) type constraints return C.args((Constraint)constraintArg); @@ -116,13 +116,20 @@ } public void expect(String methodName, Object singleEqualArg) { - expect(methodName, createConstraintMatcher(singleEqualArg)); + expect(methodName, createConstraints(singleEqualArg)); } + /** @deprecated */ public void expect(String methodName, ConstraintMatcher args) { - calls.addExpect(callFactory.createCallExpectation(callFactory.createCallSignature(methodName, args, callFactory.createVoidStub()))); + expect(methodName, args.getConstraints()); } + public void expect(String methodName, Constraint[] args) { + calls.addExpect(callFactory.createCallExpectation( + callFactory.createMethodCallWithVoid(methodName, args))); + } + + public void expectAndReturn(String methodName, Object result) { this.expectAndReturn(methodName, C.NO_ARGS, result); } @@ -136,7 +143,7 @@ } public void expectAndReturn(String methodName, Object singleEqualArg, Object result) { - this.expectAndReturn(methodName, createConstraintMatcher(singleEqualArg), result); + this.expectAndReturn(methodName, createConstraints(singleEqualArg), result); } public void expectAndReturn(String methodName, Object singleEqualArg, boolean result) { @@ -147,16 +154,32 @@ this.expectAndReturn(methodName, singleEqualArg, new Integer(result)); } - public void expectAndReturn(String methodName, ConstraintMatcher args, boolean result) { + public void expectAndReturn(String methodName, Constraint[] args, boolean result) { this.expectAndReturn(methodName, args, new Boolean(result)); } - public void expectAndReturn(String methodName, ConstraintMatcher args, int result) { + public void expectAndReturn(String methodName, Constraint[] args, int result) { this.expectAndReturn(methodName, args, new Integer(result)); } + /** @deprecated */ + public void expectAndReturn(String methodName, ConstraintMatcher args, boolean result) { + this.expectAndReturn(methodName, args.getConstraints(), result); + } + + /** @deprecated */ + public void expectAndReturn(String methodName, ConstraintMatcher args, int result) { + this.expectAndReturn(methodName, args.getConstraints(), result); + } + + /** @deprecated */ public void expectAndReturn(String methodName, ConstraintMatcher args, Object result) { - calls.addExpect(callFactory.createCallExpectation(callFactory.createCallSignature(methodName, args, callFactory.createReturnStub(result)))); + this.expectAndReturn(methodName, args.getConstraints(), result); + } + + public void expectAndReturn(String methodName, Constraint[] constraints, Object result) { + calls.addExpect(callFactory.createCallExpectation( + callFactory.createMethodCallWithReturn(methodName, constraints, result))); } public void expectAndThrow(String methodName, Throwable exception) { @@ -164,11 +187,17 @@ } public void expectAndThrow(String methodName, Object singleEqualArg, Throwable exception) { - this.expectAndThrow(methodName, createConstraintMatcher(singleEqualArg), exception); + this.expectAndThrow(methodName, createConstraints(singleEqualArg), exception); } + /** @deprecated */ public void expectAndThrow(String methodName, ConstraintMatcher args, Throwable exception) { - calls.addExpect(callFactory.createCallExpectation(callFactory.createCallSignature(methodName, args, callFactory.createThrowStub(exception)))); + expectAndThrow(methodName, args.getConstraints(), exception); + } + + public void expectAndThrow(String methodName, Constraint[] constraints, Throwable exception) { + calls.addExpect(callFactory.createCallExpectation( + callFactory.createMethodCallWithException(methodName, constraints, exception))); } public void match(String methodName) { @@ -176,7 +205,7 @@ } public void match(String methodName, Object singleEqualArg) { - match(methodName, createConstraintMatcher(singleEqualArg)); + match(methodName, createConstraints(singleEqualArg)); } public void match(String methodName, int singleEqualArg) { @@ -187,8 +216,13 @@ match(methodName, new Boolean(singleEqualArg)); } + /** @deprecated */ public void match(String methodName, ConstraintMatcher args) { - calls.addMatch(callFactory.createCallSignature(methodName, args, callFactory.createVoidStub())); + match(methodName, args.getConstraints()); + } + + public void match(String methodName, Constraint[] args) { + calls.addMatch(callFactory.createMethodCallWithVoid(methodName, args)); } public void matchAndReturn(String methodName, Object result) { @@ -204,7 +238,7 @@ } public void matchAndReturn(String methodName, Object singleEqualArg, Object result) { - this.matchAndReturn(methodName, createConstraintMatcher(singleEqualArg), result); + this.matchAndReturn(methodName, createConstraints(singleEqualArg), result); } public void matchAndReturn(String methodName, boolean singleEqualArg, Object result) { @@ -227,12 +261,18 @@ this.matchAndReturn(methodName, args, new Boolean(result)); } + /** @deprecated */ public void matchAndReturn(String methodName, ConstraintMatcher args, int result) { this.matchAndReturn(methodName, args, new Integer(result)); } + /** @deprecated */ public void matchAndReturn(String methodName, ConstraintMatcher args, Object result) { - calls.addMatch(callFactory.createCallSignature(methodName, args, callFactory.createReturnStub(result))); + matchAndReturn(methodName, args.getConstraints(), result); + } + + public void matchAndReturn(String methodName, Constraint[] args, Object result) { + calls.addMatch(callFactory.createMethodCallWithReturn(methodName, args, result)); } public void matchAndThrow(String methodName, Throwable throwable) { @@ -240,7 +280,7 @@ } public void matchAndThrow(String methodName, Object singleEqualArg, Throwable throwable) { - this.matchAndThrow(methodName, createConstraintMatcher(singleEqualArg), throwable); + this.matchAndThrow(methodName, createConstraints(singleEqualArg), throwable); } public void matchAndThrow(String methodName, boolean singleEqualArg, Throwable throwable) { @@ -251,27 +291,14 @@ this.matchAndThrow(methodName,new Integer(singleEqualArg), throwable); } + /** @deprecated */ public void matchAndThrow(String methodName, ConstraintMatcher args, Throwable throwable) { - calls.addMatch(callFactory.createCallSignature(methodName, args, callFactory.createThrowStub(throwable))); - } - - /** @deprecated @see OrderedMock - */ - public void expect(String methodName, CallSequence deprecated) { - throw new AssertionFailedError("method is deprecated! Use: new OrderedMock() instead..."); - } - - /** @deprecated @see OrderedMock - */ - public void expectAndReturn(String methodName, CallSequence deprecated, Object result) { - throw new AssertionFailedError("method is deprecated! Use: new OrderedMock() instead..."); - } - - /** @deprecated @see OrderedMock - */ - public void expectAndThrow(String methodName, CallSequence deprecated, Throwable throwable) { - throw new AssertionFailedError("method is deprecated! Use: new OrderedMock() instead..."); + matchAndThrow(methodName, args.getConstraints(), throwable); } + + public void matchAndThrow(String methodName, Constraint[] args, Throwable throwable) { + calls.addMatch(callFactory.createMethodCallWithException(methodName, args, throwable)); + } /** @deprecated @see expect */ |