|
|
7f0bec7 |
diff -Nru jmock-2.5.1/src/org/jmock/Expectations.java jmock-2.5.1-gil/src/org/jmock/Expectations.java
|
|
|
7f0bec7 |
--- jmock-2.5.1/src/org/jmock/Expectations.java 2008-07-03 13:52:29.000000000 +0200
|
|
|
7f0bec7 |
+++ jmock-2.5.1-gil/src/org/jmock/Expectations.java 2012-11-02 13:58:47.805563931 +0100
|
|
|
7f0bec7 |
@@ -184,39 +184,48 @@
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public boolean with(boolean value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return false;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public byte with(byte value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return 0;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public short with(short value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return 0;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public char with(char value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return 0;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public int with(int value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return 0;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public long with(long value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return 0;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public float with(float value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return 0;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public double with(double value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return 0;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public <T> T with(T value) {
|
|
|
7f0bec7 |
- return with(equalTo(value));
|
|
|
7f0bec7 |
+ addParameterMatcher(equal(value));
|
|
|
7f0bec7 |
+ return value;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public void will(Action action) {
|
|
|
7f0bec7 |
diff -Nru jmock-2.5.1/src/org/jmock/internal/InvocationExpectationBuilder.java jmock-2.5.1-gil/src/org/jmock/internal/InvocationExpectationBuilder.java
|
|
|
7f0bec7 |
--- jmock-2.5.1/src/org/jmock/internal/InvocationExpectationBuilder.java 2008-06-23 10:56:29.000000000 +0200
|
|
|
7f0bec7 |
+++ jmock-2.5.1-gil/src/org/jmock/internal/InvocationExpectationBuilder.java 2012-11-02 13:58:47.808563779 +0100
|
|
|
7f0bec7 |
@@ -10,10 +10,9 @@
|
|
|
7f0bec7 |
import org.jmock.api.Action;
|
|
|
7f0bec7 |
import org.jmock.api.Expectation;
|
|
|
7f0bec7 |
import org.jmock.api.Invocation;
|
|
|
7f0bec7 |
-import org.jmock.internal.matcher.MethodMatcher;
|
|
|
7f0bec7 |
import org.jmock.internal.matcher.MethodNameMatcher;
|
|
|
7f0bec7 |
import org.jmock.internal.matcher.MockObjectMatcher;
|
|
|
7f0bec7 |
-import org.jmock.internal.matcher.ParametersMatcher;
|
|
|
7f0bec7 |
+import org.jmock.internal.matcher.AllParametersMatcher;
|
|
|
7f0bec7 |
import org.jmock.syntax.MethodClause;
|
|
|
7f0bec7 |
import org.jmock.syntax.ParametersClause;
|
|
|
7f0bec7 |
import org.jmock.syntax.ReceiverClause;
|
|
|
7f0bec7 |
@@ -83,14 +82,14 @@
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public void createExpectationFrom(Invocation invocation) {
|
|
|
7f0bec7 |
- expectation.setMethodMatcher(new MethodMatcher(invocation.getInvokedMethod()));
|
|
|
7f0bec7 |
+ expectation.setMethod(invocation.getInvokedMethod());
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
if (capturedParameterMatchers.isEmpty()) {
|
|
|
7f0bec7 |
- expectation.setParametersMatcher(new ParametersMatcher(invocation.getParametersAsArray()));
|
|
|
7f0bec7 |
+ expectation.setParametersMatcher(new AllParametersMatcher(invocation.getParametersAsArray()));
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
else {
|
|
|
7f0bec7 |
checkParameterMatcherCount(invocation);
|
|
|
7f0bec7 |
- expectation.setParametersMatcher(new ParametersMatcher(capturedParameterMatchers));
|
|
|
7f0bec7 |
+ expectation.setParametersMatcher(new AllParametersMatcher(capturedParameterMatchers));
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
@@ -130,7 +129,7 @@
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public void with(Matcher... parameterMatchers) {
|
|
|
7f0bec7 |
- expectation.setParametersMatcher(new ParametersMatcher(Arrays.asList(parameterMatchers)));
|
|
|
7f0bec7 |
+ expectation.setParametersMatcher(new AllParametersMatcher(Arrays.asList(parameterMatchers)));
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
public void withNoArguments() {
|
|
|
7f0bec7 |
diff -Nru jmock-2.5.1/src/org/jmock/internal/InvocationExpectation.java jmock-2.5.1-gil/src/org/jmock/internal/InvocationExpectation.java
|
|
|
7f0bec7 |
--- jmock-2.5.1/src/org/jmock/internal/InvocationExpectation.java 2007-12-28 00:26:14.000000000 +0100
|
|
|
7f0bec7 |
+++ jmock-2.5.1-gil/src/org/jmock/internal/InvocationExpectation.java 2012-11-02 13:58:47.807563829 +0100
|
|
|
7f0bec7 |
@@ -10,6 +10,7 @@
|
|
|
7f0bec7 |
import org.jmock.api.Action;
|
|
|
7f0bec7 |
import org.jmock.api.Expectation;
|
|
|
7f0bec7 |
import org.jmock.api.Invocation;
|
|
|
7f0bec7 |
+import org.jmock.internal.matcher.MethodMatcher;
|
|
|
7f0bec7 |
import org.jmock.lib.action.VoidAction;
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
/**
|
|
|
7f0bec7 |
@@ -19,10 +20,11 @@
|
|
|
7f0bec7 |
* @author smgf
|
|
|
7f0bec7 |
*/
|
|
|
7f0bec7 |
public class InvocationExpectation implements Expectation {
|
|
|
7f0bec7 |
+ private static ParametersMatcher ANY_PARAMETERS = new AnyParametersMatcher();
|
|
|
7f0bec7 |
private Cardinality cardinality = Cardinality.ALLOWING;
|
|
|
7f0bec7 |
private Matcher objectMatcher = IsAnything.anything();
|
|
|
7f0bec7 |
- private Matcher<Method> methodMatcher = IsAnything.anything("<any method>");
|
|
|
7f0bec7 |
- private Matcher<Object[]> parametersMatcher = IsAnything.anything("(<any parameters>)");
|
|
|
7f0bec7 |
+ private Matcher methodMatcher = IsAnything.anything("<any method>");
|
|
|
7f0bec7 |
+ private ParametersMatcher parametersMatcher = ANY_PARAMETERS;
|
|
|
7f0bec7 |
private Action action = new VoidAction();
|
|
|
7f0bec7 |
private List<OrderingConstraint> orderingConstraints = new ArrayList<OrderingConstraint>();
|
|
|
7f0bec7 |
private List<SideEffect> sideEffects = new ArrayList<SideEffect>();
|
|
|
7f0bec7 |
@@ -36,12 +38,16 @@
|
|
|
7f0bec7 |
public void setObjectMatcher(Matcher objectMatcher) {
|
|
|
7f0bec7 |
this.objectMatcher = objectMatcher;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ public void setMethod(Method method) {
|
|
|
7f0bec7 |
+ this.methodMatcher = new MethodMatcher(method);
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
- public void setMethodMatcher(Matcher<Method> methodMatcher) {
|
|
|
7f0bec7 |
- this.methodMatcher = methodMatcher;
|
|
|
7f0bec7 |
+ public void setMethodMatcher(Matcher matcher) {
|
|
|
7f0bec7 |
+ this.methodMatcher = matcher;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
- public void setParametersMatcher(Matcher<Object[]> parametersMatcher) {
|
|
|
7f0bec7 |
+ public void setParametersMatcher(ParametersMatcher parametersMatcher) {
|
|
|
7f0bec7 |
this.parametersMatcher = parametersMatcher;
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
@@ -121,4 +127,14 @@
|
|
|
7f0bec7 |
sideEffect.perform();
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ private static class AnyParametersMatcher extends IsAnything<Object[]> implements ParametersMatcher {
|
|
|
7f0bec7 |
+ public AnyParametersMatcher() {
|
|
|
7f0bec7 |
+ super("(<any parameters>)");
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ public boolean isCompatibleWith(Object[] parameters) {
|
|
|
7f0bec7 |
+ return true;
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+ };
|
|
|
7f0bec7 |
}
|
|
|
7f0bec7 |
diff -Nru jmock-2.5.1/src/org/jmock/internal/matcher/AllParametersMatcher.java jmock-2.5.1-gil/src/org/jmock/internal/matcher/AllParametersMatcher.java
|
|
|
7f0bec7 |
--- jmock-2.5.1/src/org/jmock/internal/matcher/AllParametersMatcher.java 1970-01-01 01:00:00.000000000 +0100
|
|
|
7f0bec7 |
+++ jmock-2.5.1-gil/src/org/jmock/internal/matcher/AllParametersMatcher.java 2012-11-02 13:58:47.809563730 +0100
|
|
|
7f0bec7 |
@@ -0,0 +1,80 @@
|
|
|
7f0bec7 |
+package org.jmock.internal.matcher;
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+import static java.util.Arrays.asList;
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+import java.util.List;
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+import org.hamcrest.Description;
|
|
|
7f0bec7 |
+import org.hamcrest.Matcher;
|
|
|
7f0bec7 |
+import org.hamcrest.TypeSafeDiagnosingMatcher;
|
|
|
7f0bec7 |
+import org.hamcrest.core.IsEqual;
|
|
|
7f0bec7 |
+import org.jmock.internal.ParametersMatcher;
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+public class AllParametersMatcher extends TypeSafeDiagnosingMatcher<Object[]> implements ParametersMatcher {
|
|
|
7f0bec7 |
+ private final Matcher<Object>[] elementMatchers;
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ public AllParametersMatcher(Object[] expectedValues) {
|
|
|
7f0bec7 |
+ this.elementMatchers = equalMatchersFor(expectedValues);
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ @SuppressWarnings("unchecked")
|
|
|
7f0bec7 |
+ public AllParametersMatcher(List<Matcher<?>> parameterMatchers) {
|
|
|
7f0bec7 |
+ this.elementMatchers = parameterMatchers.toArray(new Matcher[0]);
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ public boolean isCompatibleWith(Object[] parameters) {
|
|
|
7f0bec7 |
+ return elementMatchers.length == parameters.length;
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ @Override
|
|
|
7f0bec7 |
+ public boolean matchesSafely(Object[] parameters, Description mismatch) {
|
|
|
7f0bec7 |
+ return matchesNumberOfParameters(parameters, mismatch)
|
|
|
7f0bec7 |
+ && matchesParameters(parameters, mismatch);
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ private boolean matchesNumberOfParameters(Object[] parameters, Description mismatch) {
|
|
|
7f0bec7 |
+ if (elementMatchers.length != parameters.length) {
|
|
|
7f0bec7 |
+ mismatch.appendText("wrong number of parameters: ")
|
|
|
7f0bec7 |
+ .appendValue(parameters);
|
|
|
7f0bec7 |
+ return false;
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+ return true;
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ private boolean matchesParameters(Object[] parameters, Description mismatch) {
|
|
|
7f0bec7 |
+ boolean result = true;
|
|
|
7f0bec7 |
+ for (int i = 0; i < parameters.length; i++) {
|
|
|
7f0bec7 |
+ result &= matchesParameter(parameters[i], elementMatchers[i], mismatch, i);
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+ return result;
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ private boolean matchesParameter(final Object value, final Matcher<Object> matcher, Description mismatch, int index) {
|
|
|
7f0bec7 |
+ mismatch.appendText("\n parameter " + index + " ");
|
|
|
7f0bec7 |
+ final boolean parameterMatches = matcher.matches(value);
|
|
|
7f0bec7 |
+ if (parameterMatches) {
|
|
|
7f0bec7 |
+ mismatch.appendText("matched: ").appendDescriptionOf(matcher);
|
|
|
7f0bec7 |
+ } else {
|
|
|
7f0bec7 |
+ mismatch.appendText("did not match: ")
|
|
|
7f0bec7 |
+ .appendDescriptionOf(matcher)
|
|
|
7f0bec7 |
+ .appendText(", because ");
|
|
|
7f0bec7 |
+ matcher.describeMismatch(value, mismatch);
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+ return parameterMatches;
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ public void describeTo(Description description) {
|
|
|
7f0bec7 |
+ description.appendList("(", ", ",")", asList(elementMatchers));
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+ @SuppressWarnings("unchecked")
|
|
|
7f0bec7 |
+ private static Matcher<Object>[] equalMatchersFor(Object[] expectedValues) {
|
|
|
7f0bec7 |
+ Matcher<Object>[] matchers = new Matcher[expectedValues.length];
|
|
|
7f0bec7 |
+ for (int i = 0; i < expectedValues.length; i++) {
|
|
|
7f0bec7 |
+ matchers[i] = new IsEqual<Object>(expectedValues[i]);
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+ return matchers;
|
|
|
7f0bec7 |
+ }
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+}
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
diff -Nru jmock-2.5.1/src/org/jmock/internal/ParametersMatcher.java jmock-2.5.1-gil/src/org/jmock/internal/ParametersMatcher.java
|
|
|
7f0bec7 |
--- jmock-2.5.1/src/org/jmock/internal/ParametersMatcher.java 1970-01-01 01:00:00.000000000 +0100
|
|
|
7f0bec7 |
+++ jmock-2.5.1-gil/src/org/jmock/internal/ParametersMatcher.java 2012-11-02 13:58:47.809563730 +0100
|
|
|
7f0bec7 |
@@ -0,0 +1,12 @@
|
|
|
7f0bec7 |
+package org.jmock.internal;
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+import org.hamcrest.Matcher;
|
|
|
7f0bec7 |
+
|
|
|
7f0bec7 |
+public interface ParametersMatcher extends Matcher<Object[]> {
|
|
|
7f0bec7 |
+ /**
|
|
|
7f0bec7 |
+ * Is this matcher likely to be relevant to the given parameters?
|
|
|
7f0bec7 |
+ * @param parameters The parameters to be matched
|
|
|
7f0bec7 |
+ * @return true iff the parameters may be relevant.
|
|
|
7f0bec7 |
+ */
|
|
|
7f0bec7 |
+ boolean isCompatibleWith(Object[] parameters);
|
|
|
7f0bec7 |
+}
|
|
|
7f0bec7 |
diff -Nru jmock-2.5.1/test/org/jmock/test/acceptance/HamcrestTypeSafetyAcceptanceTests.java jmock-2.5.1-gil/test/org/jmock/test/acceptance/HamcrestTypeSafetyAcceptanceTests.java
|
|
|
7f0bec7 |
--- jmock-2.5.1/test/org/jmock/test/acceptance/HamcrestTypeSafetyAcceptanceTests.java 2007-02-06 17:20:50.000000000 +0100
|
|
|
7f0bec7 |
+++ jmock-2.5.1-gil/test/org/jmock/test/acceptance/HamcrestTypeSafetyAcceptanceTests.java 2012-11-02 13:58:47.809563730 +0100
|
|
|
7f0bec7 |
@@ -1,7 +1,7 @@
|
|
|
7f0bec7 |
package org.jmock.test.acceptance;
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
-import static org.hamcrest.number.OrderingComparisons.greaterThan;
|
|
|
7f0bec7 |
-import static org.hamcrest.text.StringStartsWith.startsWith;
|
|
|
7f0bec7 |
+import static org.hamcrest.CoreMatchers.startsWith;
|
|
|
7f0bec7 |
+import static org.hamcrest.number.OrderingComparison.greaterThan;
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
import java.lang.reflect.Method;
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
diff -Nru jmock-2.5.1/test/org/jmock/test/unit/internal/InvocationExpectationTests.java jmock-2.5.1-gil/test/org/jmock/test/unit/internal/InvocationExpectationTests.java
|
|
|
7f0bec7 |
--- jmock-2.5.1/test/org/jmock/test/unit/internal/InvocationExpectationTests.java 2007-06-23 10:48:36.000000000 +0200
|
|
|
7f0bec7 |
+++ jmock-2.5.1-gil/test/org/jmock/test/unit/internal/InvocationExpectationTests.java 2012-11-02 13:58:47.811563631 +0100
|
|
|
7f0bec7 |
@@ -16,6 +16,7 @@
|
|
|
7f0bec7 |
import org.jmock.internal.InvocationExpectation;
|
|
|
7f0bec7 |
import org.jmock.internal.OrderingConstraint;
|
|
|
7f0bec7 |
import org.jmock.internal.SideEffect;
|
|
|
7f0bec7 |
+import org.jmock.internal.matcher.AllParametersMatcher;
|
|
|
7f0bec7 |
import org.jmock.lib.action.ReturnValueAction;
|
|
|
7f0bec7 |
import org.jmock.test.unit.support.AssertThat;
|
|
|
7f0bec7 |
import org.jmock.test.unit.support.MethodFactory;
|
|
|
7f0bec7 |
@@ -72,7 +73,7 @@
|
|
|
7f0bec7 |
Object[] differentArgCount = {1,2,3};
|
|
|
7f0bec7 |
Object[] noArgs = null;
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
- expectation.setParametersMatcher(equalTo(args));
|
|
|
7f0bec7 |
+ expectation.setParametersMatcher(new AllParametersMatcher(args));
|
|
|
7f0bec7 |
|
|
|
7f0bec7 |
assertTrue("should match", expectation.matches(new Invocation(targetObject, method, args)));
|
|
|
7f0bec7 |
assertTrue("should not match", !expectation.matches(new Invocation(targetObject, method, differentArgs)));
|