Skip to content

Commit

Permalink
Enhance Equals
Browse files Browse the repository at this point in the history
  • Loading branch information
big-andy-coates committed Nov 30, 2022
1 parent b7f5b5a commit 0b8e97c
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/main/java/org/mockito/internal/matchers/Equals.java
Expand Up @@ -22,6 +22,11 @@ public boolean matches(Object actual) {
return Equality.areEqual(this.wanted, actual);
}

@Override
public Class<?> type() {
return wanted != null ? wanted.getClass() : ArgumentMatcher.super.type();
}

@Override
public String toString() {
return describe(wanted);
Expand Down
49 changes: 49 additions & 0 deletions src/test/java/org/mockito/internal/matchers/EqualsTest.java
Expand Up @@ -4,13 +4,22 @@
*/
package org.mockito.internal.matchers;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

import org.junit.Test;
import org.mockito.Mock;
import org.mockitousage.IMethods;
import org.mockitoutil.TestBase;

public class EqualsTest extends TestBase {

@Mock private IMethods mock;

@Test
public void shouldBeEqual() {
assertEquals(new Equals(null), new Equals(null));
Expand Down Expand Up @@ -102,4 +111,44 @@ public void shouldMatchTypesSafelyWhenGivenIsNull() throws Exception {
// then
assertFalse(equals.typeMatches(null));
}

@Test
public void shouldMockVarargInvocation() {
given(mock.varargs(eq("one param"))).willReturn(1);

assertThat(mock.varargs("one param")).isEqualTo(1);
assertThat(mock.varargs()).isEqualTo(0);
assertThat(mock.varargs("different")).isEqualTo(0);
assertThat(mock.varargs("one param", "another")).isEqualTo(0);
}

@Test
public void shouldVerifyInvocation() {
mock.varargs("one param");

verify(mock).varargs(eq("one param"));
verify(mock, never()).varargs();
verify(mock, never()).varargs(eq("different"));
verify(mock, never()).varargs(eq("one param"), eq("another"));
}

@Test
public void shouldMockVarargInvocation_raw() {
given(mock.varargs(eq(new String[] {"one param"}))).willReturn(1);

assertThat(mock.varargs("one param")).isEqualTo(1);
assertThat(mock.varargs()).isEqualTo(0);
assertThat(mock.varargs("different")).isEqualTo(0);
assertThat(mock.varargs("one param", "another")).isEqualTo(0);
}

@Test
public void shouldVerifyInvocation_raw() {
mock.varargs("one param");

verify(mock).varargs(eq(new String[] {"one param"}));
verify(mock, never()).varargs(eq(new String[] {}));
verify(mock, never()).varargs(eq(new String[] {"different"}));
verify(mock, never()).varargs(eq(new String[] {"one param", "another"}));
}
}

0 comments on commit 0b8e97c

Please sign in to comment.