Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/matchers In directory sc8-pr-cvs1:/tmp/cvs-serv8912/src/core/com/mockobjects/dynamic/matchers Added Files: StatelessInvocationMatcher.java CallOnceMatcher.java MethodNameMatcher.java ArgumentsMatcher.java Log Message: Added support for state to InvocationMatchers Added CallOnceMatcher Removed CallOnceStub Moved matchers into separate package --- NEW FILE: StatelessInvocationMatcher.java --- /* * Copyright Mockobjects.com 29-Oct-2003 */ package com.mockobjects.dynamic.matchers; import com.mockobjects.dynamic.Invocation; import com.mockobjects.dynamic.InvocationMatcher; public abstract class StatelessInvocationMatcher implements InvocationMatcher { public void invoked(Invocation invocation) { // Do nothing because state cannot change } public void verify() { // Nothing to verify because state cannot change } } --- NEW FILE: CallOnceMatcher.java --- /* * Copyright mockobjects.com 29-Oct-2003 */ package com.mockobjects.dynamic.matchers; import junit.framework.Assert; import com.mockobjects.dynamic.Invocation; import com.mockobjects.dynamic.InvocationMatcher; public class CallOnceMatcher implements InvocationMatcher { private boolean wasInvoked = false; public boolean matches(Invocation invocation) { return ! wasInvoked; } public void invoked(Invocation invocation) { wasInvoked = true; } public void verify() { Assert.assertTrue("Should have been invoked", wasInvoked); } } --- NEW FILE: MethodNameMatcher.java --- /* * Copyright Mockobjects.com 29-Oct-2003 */ package com.mockobjects.dynamic.matchers; import com.mockobjects.constraint.Constraint; import com.mockobjects.constraint.IsEqual; import com.mockobjects.dynamic.Invocation; public class MethodNameMatcher extends StatelessInvocationMatcher { private Constraint constraint; public MethodNameMatcher(Constraint constraint) { this.constraint = constraint; } public MethodNameMatcher(String methodName) { this(new IsEqual(methodName)); } public boolean matches(Invocation invocation) { return constraint.eval(invocation.getMethodName()); } } --- NEW FILE: ArgumentsMatcher.java --- /* * Copyright mockobjects.com 29-Oct-2003 * */ package com.mockobjects.dynamic.matchers; import java.util.List; import com.mockobjects.constraint.Constraint; import com.mockobjects.dynamic.Invocation; public class ArgumentsMatcher extends StatelessInvocationMatcher { private Constraint[] constraints; public ArgumentsMatcher(Constraint[] constraints) { ArgumentsMatcher.this.constraints = constraints; } public boolean matches(Invocation invocation) { return constraints.length == invocation.getParameterValues().size() && matchesValues(invocation.getParameterValues()); } private boolean matchesValues(List list) { for (int i = 0; i < constraints.length; ++i) { if (!constraints[i].eval(list.get(i))) { return false; } } return true; } public Constraint[] getConstraints() { return constraints; } public String toString() { StringBuffer result = new StringBuffer(); result.append("ArgumentMatcher: "); for (int i = 0; i < constraints.length; ++i) { result.append(constraints[i]).append(", "); } return result.toString(); } public boolean equals(Object other) { return other != null && toString().equals(other.toString()); } } |