Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic In directory sc8-pr-cvs1:/tmp/cvs-serv7796/src/core/com/mockobjects/dynamic Modified Files: AbstractCallableCollection.java CallableList.java CallBag.java CallableArrayList.java CallSequence.java Log Message: Started renaming matches to stubs Changed ordering so that CallBags search backwards Started new, cleaner test class for CallBag Index: AbstractCallableCollection.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/AbstractCallableCollection.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- AbstractCallableCollection.java 6 Jul 2003 23:40:29 -0000 1.3 +++ AbstractCallableCollection.java 9 Jul 2003 02:14:00 -0000 1.4 @@ -5,7 +5,16 @@ abstract public class AbstractCallableCollection implements CallableCollection { protected CallableList expectedCalls = new CallableArrayList(); - protected CallableList matchingCalls = new CallableArrayList(); + protected CallableList stubCalls = new CallableArrayList(); + + public AbstractCallableCollection() { + this(new CallableArrayList(), new CallableArrayList()); + } + + public AbstractCallableCollection(CallableList expectedCalls, CallableList stubCalls) { + this.expectedCalls = expectedCalls; + this.stubCalls = stubCalls; + } abstract public String getDescription(); abstract public Object call(Invocation invocation) throws Throwable; @@ -16,23 +25,23 @@ public void reset() { expectedCalls.clear(); - matchingCalls.clear(); + stubCalls.clear(); } public void addExpect(Callable call) { - this.expectedCalls.add(call); + expectedCalls.add(call); } public void addMatch(Callable call) { - this.matchingCalls.add(call); + stubCalls.add(call); } public void verify() { expectedCalls.verify(); } - protected Callable findMatchingCall(Invocation invocation) throws AssertionFailedError { - Callable foundCall = matchingCalls.firstMatchingCall(invocation); + protected Callable lastStubCall(Invocation invocation) throws AssertionFailedError { + Callable foundCall = stubCalls.lastMatchingCall(invocation); if (foundCall == null) { throw createUnexpectedCallError(invocation); } Index: CallableList.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/CallableList.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- CallableList.java 6 Jul 2003 23:40:29 -0000 1.3 +++ CallableList.java 9 Jul 2003 02:14:00 -0000 1.4 @@ -18,6 +18,6 @@ Callable get(int index); int size(); void clear(); - Callable firstMatchingCall(final Invocation invocation); + Callable lastMatchingCall(Invocation invocation); Callable apply(final Handler handler); } Index: CallBag.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/CallBag.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- CallBag.java 6 Jul 2003 23:24:09 -0000 1.8 +++ CallBag.java 9 Jul 2003 02:14:00 -0000 1.9 @@ -5,11 +5,18 @@ public class CallBag extends AbstractCallableCollection { + public CallBag() { + super(); + } + + public CallBag(CallableList expectedCalls, CallableList stubCalls) { + super(expectedCalls, stubCalls); + } + public Object call(Invocation invocation) throws Throwable { - - Callable foundCall = expectedCalls.firstMatchingCall(invocation); + Callable foundCall = expectedCalls.lastMatchingCall(invocation); if (foundCall == null) { - foundCall = findMatchingCall(invocation); + foundCall = lastStubCall(invocation); } return foundCall.call(invocation); Index: CallableArrayList.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/CallableArrayList.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CallableArrayList.java 6 Jul 2003 23:40:29 -0000 1.1 +++ CallableArrayList.java 9 Jul 2003 02:14:00 -0000 1.2 @@ -6,46 +6,42 @@ import java.util.ArrayList; public class CallableArrayList implements CallableList { - public ArrayList list = new ArrayList(); - + private ArrayList callables = new ArrayList(); public void add(Callable callable) { - list.add(callable); + callables.add(callable); } public boolean isEmpty() { - return list.isEmpty(); + return callables.isEmpty(); } public Callable get(int index) { - return (Callable)list.get(index); + return (Callable)callables.get(index); } public int size() { - return list.size(); + return callables.size(); } public void clear() { - list.clear(); + callables.clear(); } - public Callable firstMatchingCall(final Invocation invocation) { - return apply(new Handler() { - public Callable handle(int index, Callable callable) { - return callable.matches(invocation) ? callable : null; - } - }); - } + public Callable lastMatchingCall(Invocation invocation) { + int index = callables.lastIndexOf(new MatcherHack(invocation)); + return index > -1 ? get(index) : null; + } - public Callable apply(final CallableList.Handler handler) { - for (int i = 0; i < list.size(); i++) { - Callable result = handler.handle(i, (Callable)list.get(i)); + public Callable apply(final CallableList.Handler handler) { + for (int i = 0; i < callables.size(); i++) { + Callable result = handler.handle(i, (Callable)callables.get(i)); if (null != result) { return result; } } return null; } - + public void verify() { apply(new Handler() { public Callable handle(int index, Callable callable) { @@ -54,4 +50,10 @@ } }); } + + private class MatcherHack { + private Invocation invocation; + public MatcherHack(Invocation invocation) {this.invocation = invocation; } + public boolean equals(Object obj) { return ((Callable)obj).matches(invocation); } + } } Index: CallSequence.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/CallSequence.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- CallSequence.java 6 Jul 2003 23:24:09 -0000 1.10 +++ CallSequence.java 9 Jul 2003 02:14:00 -0000 1.11 @@ -18,7 +18,7 @@ return callable.call(invocation); } - return findMatchingCall(invocation).call(invocation); + return lastStubCall(invocation).call(invocation); } public String getDescription() { |