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());
}
}
|