Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove VarargMatcher #2835

Merged
merged 14 commits into from
Dec 30, 2022
2 changes: 1 addition & 1 deletion src/main/java/org/mockito/internal/matchers/Any.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import org.mockito.ArgumentMatcher;

public class Any implements ArgumentMatcher<Object>, VarargMatcher, Serializable {
public class Any implements ArgumentMatcher<Object>, Serializable {

public static final Any ANY = new Any();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ public void should_match_varargs_using_any_varargs() throws Exception {
// given
mock.varargs("1", "2");
Invocation invocation = getLastInvocation();
InvocationMatcher invocationMatcher = new InvocationMatcher(invocation, (List) asList(ANY));
InvocationMatcher invocationMatcher = new InvocationMatcher(invocation, asList(ANY, ANY));

// when
boolean match = invocationMatcher.matches(invocation);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public void shouldKnowWhenVarargsMatch() {
public void shouldAllowAnyMatchEntireVararg() {
// given
invocation = varargs("1", "2");
matchers = asList(ANY);
matchers = asList(ANY, ANY);

// when
boolean match =
Expand All @@ -151,10 +151,10 @@ public void shouldNotAllowAnyWithMixedVarargs() {
}

@Test
public void shouldAllowanyWithMixedVarargs() {
public void shouldAllowAnyWithMixedVarargs() {
// given
invocation = mixedVarargs(1, "1", "2");
matchers = asList(new Equals(1), ANY);
matchers = asList(new Equals(1), ANY, ANY);

// when
boolean match =
Expand Down Expand Up @@ -186,7 +186,7 @@ public void shouldAnyDealWithDifferentSizeOfArgs() {
public void shouldMatchAnyEvenIfOneOfTheArgsIsNull() {
// given
invocation = mixedVarargs(null, null, "2");
matchers = asList(new Equals(null), ANY);
matchers = asList(new Equals(null), ANY, ANY);

// when
getMatcherApplicationStrategyFor(invocation, matchers)
Expand All @@ -200,7 +200,7 @@ public void shouldMatchAnyEvenIfOneOfTheArgsIsNull() {
public void shouldMatchAnyEvenIfMatcherIsDecorated() {
// given
invocation = varargs("1", "2");
matchers = asList(ANY);
matchers = asList(ANY, ANY);

// when
getMatcherApplicationStrategyFor(invocation, matchers)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public void should_be_created_with_an_argument_resolver() throws Exception {
public void should_instantiate_type_if_resolver_provide_matching_types() throws Exception {
Observer observer = mock(Observer.class);
Map map = mock(Map.class);
given(resolver.resolveTypeInstances(ArgumentMatchers.<Class<?>[]>any()))
given(resolver.resolveTypeInstances(ArgumentMatchers.any(Class[].class)))
.willReturn(new Object[] {observer, map});

new ParameterizedConstructorInstantiator(this, field("withMultipleConstructor"), resolver)
Expand Down Expand Up @@ -120,7 +120,7 @@ this, field("withThrowingConstructor"), resolver)
@Test
public void should_instantiate_type_with_vararg_constructor() throws Exception {
Observer[] vararg = new Observer[] {};
given(resolver.resolveTypeInstances(ArgumentMatchers.<Class<?>[]>any()))
given(resolver.resolveTypeInstances(ArgumentMatchers.any(Class[].class)))
.willReturn(new Object[] {"", vararg});

new ParameterizedConstructorInstantiator(this, field("withVarargConstructor"), resolver)
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/org/mockitousage/basicapi/UsingVarargsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,9 @@ public void shouldStubCorrectlyWhenDoubleStringAndMixedVarargsUsed() {

@Test
// See bug #157
public void shouldMatchEasilyEmptyVararg() throws Exception {
public void shouldMatchEasilyEmptyVararg() {
// when
when(mock.foo(any())).thenReturn(-1);
when(mock.foo(any(Object[].class))).thenReturn(-1);

// then
assertEquals(-1, mock.foo());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public void shouldVerifyCorrectlyWithAny() {
table.newRow("abc", "def");

// then
verify(table, times(2)).newRow(anyString(), (String[]) any());
verify(table, times(2)).newRow(anyString(), any(String[].class));
}

@Test
Expand All @@ -36,7 +36,7 @@ public void shouldVerifyCorrectlyNumberOfInvocationsUsingAnyAndEqualArgument() {
table.newRow("x", "def");

// then
verify(table, times(2)).newRow(eq("x"), (String[]) any());
verify(table, times(2)).newRow(eq("x"), any(String[].class));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,23 @@ public void shouldMatchAny() {
mock.run("a", "b");

verify(mock).run(anyString(), anyString());
verify(mock).run((String) any(), (String) any());
verify(mock).run(any(), any());

verify(mock).run((String[]) any());
verify(mock).run(any(String[].class));

verify(mock, never()).run();
verify(mock, never()).run(anyString(), eq("f"));
}

@Test
public void shouldAllowUsinganyForVarArgs() {
public void shouldAllowUsingAnyForVarArgs() {
mock.run("a", "b");
verify(mock).run((String[]) any());
verify(mock).run(any(String[].class));
}

@Test
public void shouldStubUsingAny() {
when(mock.run((String[]) any())).thenReturn("foo");
when(mock.run(any(String[].class))).thenReturn("foo");

assertEquals("foo", mock.run("a", "b"));
}
Expand Down
34 changes: 10 additions & 24 deletions src/test/java/org/mockitousage/matchers/VarargsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,18 +82,18 @@ public void shouldMatchVarArgs_oneNullArg_eqNull() {

@Test
public void shouldMatchVarArgs_oneNullArg_isNull() {
Object arg = null;
mock.varargs(arg);
mock.varargs((Object) null);

verify(mock).varargs(ArgumentMatchers.<Object[]>isNull());
verify(mock).varargs(ArgumentMatchers.<Object>isNull());
verify(mock, never()).varargs(isNull(Object[].class));
}

@Test
public void shouldMatchVarArgs_nullArrayArg() {
Object[] argArray = null;
mock.varargs(argArray);
mock.varargs((Object[]) null);

verify(mock).varargs(ArgumentMatchers.<Object[]>isNull());
verify(mock).varargs(isNull(Object[].class));
verify(mock).varargs(ArgumentMatchers.<Object>isNull());
}

@Test
Expand All @@ -111,21 +111,21 @@ public void shouldnotMatchVarArgs_twoArgsOneMatcher() {
public void shouldMatchVarArgs_emptyVarArgsOneAnyMatcher() {
mock.varargs();

verify(mock).varargs((String[]) any()); // any() -> VarargMatcher
verify(mock).varargs(any(String[].class));
}

@Test
public void shouldMatchVarArgs_oneArgsOneAnyMatcher() {
mock.varargs(1);

verify(mock).varargs(ArgumentMatchers.<Object[]>any()); // any() -> VarargMatcher
verify(mock).varargs(any(Object[].class));
}

@Test
public void shouldMatchVarArgs_twoArgsOneAnyMatcher() {
mock.varargs(1, 2);

verify(mock).varargs(ArgumentMatchers.<Object[]>any()); // any() -> VarargMatcher
verify(mock).varargs(any(Object[].class));
}

@Test
Expand All @@ -141,7 +141,7 @@ public void shouldMatchVarArgs_twoArgsThreeAnyMatcher() {

assertThatThrownBy(
() -> {
verify(mock).varargs(any(), any(), any()); // any() -> VarargMatcher
verify(mock).varargs(any(), any(), any());
})
.hasMessageContaining("Argument(s) are different");
}
Expand Down Expand Up @@ -363,20 +363,6 @@ public void shouldMockVarargsInvocation_multiple_vararg_matcher() {
assertThat(mock.methodWithVarargAndNonVarargVariants("a", "b", "c")).isNull();
}

@Test
public void shouldMockVarargsInvocationUsingCasts() {
TimvdLippe marked this conversation as resolved.
Show resolved Hide resolved
given(mock.methodWithVarargAndNonVarargVariants((String) any()))
.willReturn("single arg method");
given(mock.methodWithVarargAndNonVarargVariants((String[]) any()))
.willReturn("var arg method");

assertThat(mock.methodWithVarargAndNonVarargVariants("a")).isEqualTo("single arg method");
assertThat(mock.methodWithVarargAndNonVarargVariants()).isEqualTo("var arg method");
assertThat(mock.methodWithVarargAndNonVarargVariants(new String[] {"a"}))
.isEqualTo("var arg method");
assertThat(mock.methodWithVarargAndNonVarargVariants("a", "b")).isEqualTo("var arg method");
}

@Test
public void shouldMockVarargsInvocationForSuperType() {
given(mock.varargsReturningString(any(Object[].class))).willReturn("a");
Expand Down