From: Steve F. <sm...@us...> - 2003-10-04 22:56:49
|
Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic In directory sc8-pr-cvs1:/tmp/cvs-serv20912/src/core/com/mockobjects/dynamic Modified Files: LIFOInvocationDispatcher.java Mock.java C.java InvokableFactory.java CallSignature.java DefaultInvokableFactory.java Added Files: FullArgumentsMatcher.java ArgumentsMatcher.java InvocationMatcher.java InvocationMocker.java Removed Files: ConstraintMatcher.java FullConstraintMatcher.java Log Message: Started implementing new dynamic mock structure. Introduced InvocationMocker. and InvocationMatcher Renamed ConstraintMatcher to ArgumentsMatcher --- NEW FILE: FullArgumentsMatcher.java --- /* * Created on 20-Apr-03 */ package com.mockobjects.dynamic; import com.mockobjects.constraint.Constraint; public class FullArgumentsMatcher implements ArgumentsMatcher { private Constraint[] constraints; public FullArgumentsMatcher(Constraint[] constraints) { this.constraints = constraints; } public FullArgumentsMatcher(Constraint c1) { this(new Constraint[] {c1}); } public FullArgumentsMatcher(Constraint c1, Constraint c2) { this(new Constraint[] {c1, c2}); } public FullArgumentsMatcher(Constraint c1, Constraint c2, Constraint c3) { this(new Constraint[] {c1, c2, c3}); } public boolean matches(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 Object[] getConstraints() { return constraints; } //For testing public boolean equals(Object o) { if(o instanceof ArgumentsMatcher) { return matches(((ArgumentsMatcher)o).getConstraints()); } else { return false; } } } --- NEW FILE: ArgumentsMatcher.java --- /* * Copyright mockobjects.com 20-Apr-03 */ package com.mockobjects.dynamic; public interface ArgumentsMatcher { boolean matches(Object[] args); Object[] getConstraints(); } --- NEW FILE: InvocationMatcher.java --- /* * Copyright Mockobjects.com 04-Oct-2003 */ package com.mockobjects.dynamic; import com.mockobjects.constraint.Constraint; import com.mockobjects.constraint.IsEqual; public interface InvocationMatcher { boolean matches(Invocation invocation); public class MethodName implements InvocationMatcher { private Constraint constraint; public MethodName(Constraint constraint) { this.constraint = constraint; } public MethodName(String methodName) { this(new IsEqual(methodName)); } public boolean matches(Invocation invocation) { return constraint.eval(invocation.getMethodName()); } } } --- NEW FILE: InvocationMocker.java --- /* * Copyright Mockobjects.com 04-Oct-2003 */ package com.mockobjects.dynamic; public class InvocationMocker implements Invokable { private InvocationMatcher[] matchers; private Stub stub; public InvocationMocker(InvocationMatcher[] matchers, Stub stub) { this.matchers = matchers; this.stub = stub; } public String getDescription() { return null; } public boolean matches(Invocation invocation) { for (int i = 0; i < matchers.length; ++i) { if (! matchers[i].matches(invocation)) { return false; } } return true; } public Object invoke(Invocation invocation) throws Throwable { return stub.stub(invocation); } public void verify() { } } Index: LIFOInvocationDispatcher.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/LIFOInvocationDispatcher.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- LIFOInvocationDispatcher.java 11 Sep 2003 21:39:01 -0000 1.1 +++ LIFOInvocationDispatcher.java 4 Oct 2003 22:56:45 -0000 1.2 @@ -23,7 +23,7 @@ return invokable.invoke(invocation); } } - throw new DynamicMockError(invocation, "Nothing matches on this mock"); + throw new DynamicMockError(invocation, "No match found"); } public void add(Invokable invokable) { Index: Mock.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Mock.java,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- Mock.java 2 Oct 2003 23:42:06 -0000 1.40 +++ Mock.java 4 Oct 2003 22:56:45 -0000 1.41 @@ -21,13 +21,17 @@ this(mockedClass, CoreMock.mockNameFromClass(mockedClass)); } - private ConstraintMatcher createConstraintMatcher(Object constraintArg) { + public String toString() { + return coreMock.toString(); + } + + private ArgumentsMatcher createConstraintMatcher(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 new FullArgumentsMatcher((Constraint[])constraintArg); } else if (constraintArg instanceof Constraint) { // to support usage of C.lt(5) type constraints return C.args((Constraint)constraintArg); @@ -37,27 +41,27 @@ } } - public void expect(String methodName, ConstraintMatcher args) { + public void expect(String methodName, ArgumentsMatcher args) { coreMock.add(callableFactory.createVoidExpectation(methodName, args)); } - public void expectAndReturn(String methodName, ConstraintMatcher args, Object result) { + public void expectAndReturn(String methodName, ArgumentsMatcher args, Object result) { coreMock.add(callableFactory.createReturnExpectation(methodName, args, result)); } - public void expectAndThrow(String methodName, ConstraintMatcher args, Throwable throwable) { + public void expectAndThrow(String methodName, ArgumentsMatcher args, Throwable throwable) { coreMock.add(callableFactory.createThrowableExpectation(methodName, args, throwable)); } - public void match(String methodName, ConstraintMatcher args) { + public void match(String methodName, ArgumentsMatcher args) { coreMock.add(callableFactory.createVoidStub(methodName, args)); } - public void matchAndReturn(String methodName, ConstraintMatcher args, Object result) { + public void matchAndReturn(String methodName, ArgumentsMatcher args, Object result) { coreMock.add(callableFactory.createReturnStub(methodName, args, result)); } - public void matchAndThrow(String methodName, ConstraintMatcher args, Throwable throwable) { + public void matchAndThrow(String methodName, ArgumentsMatcher args, Throwable throwable) { coreMock.add(callableFactory.createThrowableStub(methodName, args, throwable)); } @@ -97,11 +101,11 @@ expectAndReturn(methodName, singleEqualArg, new Integer(result)); } - public void expectAndReturn(String methodName, ConstraintMatcher args, boolean result) { + public void expectAndReturn(String methodName, ArgumentsMatcher args, boolean result) { expectAndReturn(methodName, args, new Boolean(result)); } - public void expectAndReturn(String methodName, ConstraintMatcher args, int result) { + public void expectAndReturn(String methodName, ArgumentsMatcher args, int result) { expectAndReturn(methodName, args, new Integer(result)); } @@ -161,11 +165,11 @@ matchAndReturn(methodName, singleEqualArg, new Integer(result)); } - public void matchAndReturn(String methodName, ConstraintMatcher args, boolean result) { + public void matchAndReturn(String methodName, ArgumentsMatcher args, boolean result) { matchAndReturn(methodName, args, new Boolean(result)); } - public void matchAndReturn(String methodName, ConstraintMatcher args, int result) { + public void matchAndReturn(String methodName, ArgumentsMatcher args, int result) { matchAndReturn(methodName, args, new Integer(result)); } @@ -187,7 +191,7 @@ /** @deprecated @see expect */ - public void expectVoid(String methodName, ConstraintMatcher args) { + public void expectVoid(String methodName, ArgumentsMatcher args) { this.expect(methodName, args); } Index: C.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/C.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- C.java 6 Jul 2003 02:27:06 -0000 1.4 +++ C.java 4 Oct 2003 22:56:45 -0000 1.5 @@ -19,9 +19,9 @@ 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 ConstraintMatcher() { + public static final ArgumentsMatcher NO_ARGS = new FullArgumentsMatcher(new Constraint[0]); + public static final ArgumentsMatcher ANY_ARGS = + new ArgumentsMatcher() { public boolean matches(Object[] args) { return true; } public Object[] getConstraints() { return new String[] {"ANY"};} }; @@ -34,15 +34,15 @@ return new IsEqual(o); } - public static ConstraintMatcher eq( Object arg0, Object arg1 ) { + public static ArgumentsMatcher eq( Object arg0, Object arg1 ) { return args(eq(arg0), eq(arg1)); } - public static ConstraintMatcher eq( Object arg0, Object arg1, Object arg2 ) { + public static ArgumentsMatcher 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 ArgumentsMatcher eq( Object arg0, Object arg1, Object arg2, Object arg3 ) { return args(eq(arg0), eq(arg1), eq(arg2), eq(arg3)); } @@ -111,32 +111,32 @@ /* Helper methods for succinctly constructing Constraint arrays */ - public static ConstraintMatcher args() { + public static ArgumentsMatcher args() { return NO_ARGS; } - public static ConstraintMatcher args(Constraint p) { - return new FullConstraintMatcher(new Constraint[]{p}); + public static ArgumentsMatcher args(Constraint p) { + return new FullArgumentsMatcher(new Constraint[]{p}); } - public static ConstraintMatcher args(Constraint p1, Constraint p2) { - return new FullConstraintMatcher(new Constraint[]{p1, p2}); + public static ArgumentsMatcher args(Constraint p1, Constraint p2) { + return new FullArgumentsMatcher(new Constraint[]{p1, p2}); } - public static ConstraintMatcher args(Constraint p1, Constraint p2, Constraint p3) { - return new FullConstraintMatcher(new Constraint[]{p1, p2, p3}); + public static ArgumentsMatcher args(Constraint p1, Constraint p2, Constraint p3) { + return new FullArgumentsMatcher(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 ArgumentsMatcher args(Constraint p1, Constraint p2, Constraint p3, Constraint p4) { + return new FullArgumentsMatcher(new Constraint[]{p1, p2, p3, p4}); } - public static ConstraintMatcher anyArgs( int argCount) { + public static ArgumentsMatcher 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 new FullArgumentsMatcher(constraints); } } Index: InvokableFactory.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/InvokableFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- InvokableFactory.java 2 Oct 2003 23:45:28 -0000 1.5 +++ InvokableFactory.java 4 Oct 2003 22:56:45 -0000 1.6 @@ -1,10 +1,10 @@ package com.mockobjects.dynamic; public interface InvokableFactory { - Invokable createReturnStub( String methodName, ConstraintMatcher constraints, Object result ); - Invokable createReturnExpectation( String methodName, ConstraintMatcher constraints, Object result ); - Invokable createThrowableStub( String methodName, ConstraintMatcher constraints, Throwable throwable); - Invokable createThrowableExpectation( String methodName, ConstraintMatcher constraints, Throwable throwable); - Invokable createVoidStub ( String methodName, ConstraintMatcher constraints); - Invokable createVoidExpectation ( String methodName, ConstraintMatcher constraints); + Invokable createReturnStub( String methodName, ArgumentsMatcher constraints, Object result ); + Invokable createReturnExpectation( String methodName, ArgumentsMatcher constraints, Object result ); + Invokable createThrowableStub( String methodName, ArgumentsMatcher constraints, Throwable throwable); + Invokable createThrowableExpectation( String methodName, ArgumentsMatcher constraints, Throwable throwable); + Invokable createVoidStub ( String methodName, ArgumentsMatcher constraints); + Invokable createVoidExpectation ( String methodName, ArgumentsMatcher constraints); } Index: CallSignature.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/CallSignature.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- CallSignature.java 20 Aug 2003 21:51:27 -0000 1.8 +++ CallSignature.java 4 Oct 2003 22:56:45 -0000 1.9 @@ -3,10 +3,10 @@ public class CallSignature implements Invokable { private String methodName; - private ConstraintMatcher constraints; + private ArgumentsMatcher constraints; private Invokable delegateCall; - public CallSignature( String methodName, ConstraintMatcher constraints, Invokable delegateCall ) { + public CallSignature( String methodName, ArgumentsMatcher constraints, Invokable delegateCall ) { this.methodName = methodName; this.constraints = constraints; this.delegateCall = delegateCall; Index: DefaultInvokableFactory.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/DefaultInvokableFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DefaultInvokableFactory.java 2 Oct 2003 23:45:28 -0000 1.5 +++ DefaultInvokableFactory.java 4 Oct 2003 22:56:45 -0000 1.6 @@ -2,24 +2,24 @@ public class DefaultInvokableFactory implements InvokableFactory { - public Invokable createReturnStub(String methodName, ConstraintMatcher constraints, Object result) { + public Invokable createReturnStub(String methodName, ArgumentsMatcher constraints, Object result) { return createCallSignature(methodName, constraints, new ReturnStub(result)); } - public Invokable createReturnExpectation(String methodName, ConstraintMatcher constraints, Object result) { + public Invokable createReturnExpectation(String methodName, ArgumentsMatcher constraints, Object result) { return createCallExpectation(createCallSignature(methodName, constraints, new ReturnStub(result))); } - public Invokable createThrowableStub(String methodName, ConstraintMatcher constraints, Throwable throwable) { + public Invokable createThrowableStub(String methodName, ArgumentsMatcher constraints, Throwable throwable) { return createCallSignature(methodName, constraints, new ThrowStub(throwable)); } - public Invokable createThrowableExpectation(String methodName, ConstraintMatcher constraints, Throwable throwable) { + public Invokable createThrowableExpectation(String methodName, ArgumentsMatcher constraints, Throwable throwable) { return createCallExpectation(createCallSignature(methodName, constraints, new ThrowStub(throwable))); } - public Invokable createVoidStub(String methodName, ConstraintMatcher constraints) { + public Invokable createVoidStub(String methodName, ArgumentsMatcher constraints) { return createCallSignature(methodName, constraints, new VoidStub()); } - public Invokable createVoidExpectation(String methodName, ConstraintMatcher constraints) { + public Invokable createVoidExpectation(String methodName, ArgumentsMatcher constraints) { return createCallExpectation(createCallSignature(methodName, constraints, new VoidStub())); } @@ -27,7 +27,7 @@ return new CallOnceExpectation(callable); } - private Invokable createCallSignature(String methodName, ConstraintMatcher constraints, Invokable callable) { + private Invokable createCallSignature(String methodName, ArgumentsMatcher constraints, Invokable callable) { return new CallSignature( methodName, constraints, callable ); } --- ConstraintMatcher.java DELETED --- --- FullConstraintMatcher.java DELETED --- |