blob: 46773b88b4210d5895a8c08cae7acc4ee6cbbe59 [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.matchers;
import org.assertj.core.api.ThrowableAssert;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.exceptions.verification.junit.ArgumentsAreDifferent;
import org.mockitousage.IMethods;
import org.mockitoutil.TestBase;
import java.util.*;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class MoreMatchersTest extends TestBase {
@Mock private IMethods mock;
@Test
public void should_help_out_with_unnecessary_casting() {
when(mock.objectArgMethod(any(String.class))).thenReturn("string");
assertEquals("string", mock.objectArgMethod("foo"));
}
@Test
public void any_should_be_actual_alias_to_anyObject() {
mock.simpleMethod((Object) null);
verify(mock).simpleMethod(any());
verify(mock).simpleMethod(anyObject());
}
@Test
public void any_class_should_be_actual_alias_to_isA() {
mock.simpleMethod(new ArrayList());
verify(mock).simpleMethod(isA(List.class));
verify(mock).simpleMethod(any(List.class));
mock.simpleMethod((String) null);
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() {
verify(mock).simpleMethod(isA(String.class));
}
}).isInstanceOf(ArgumentsAreDifferent.class);
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() {
verify(mock).simpleMethod(any(String.class));
}
}).isInstanceOf(ArgumentsAreDifferent.class);
}
@Test
public void should_help_out_with_unnecessary_casting_of_lists() {
//Below yields compiler warning:
//when(mock.listArgMethod(anyList())).thenReturn("list");
when(mock.listArgMethod(anyListOf(String.class))).thenReturn("list");
assertEquals("list", mock.listArgMethod(new LinkedList<String>()));
assertEquals("list", mock.listArgMethod(Collections.<String>emptyList()));
}
@Test
public void should_help_out_with_unnecessary_casting_of_sets() {
//Below yields compiler warning:
//when(mock.setArgMethod(anySet())).thenReturn("set");
when(mock.setArgMethod(anySetOf(String.class))).thenReturn("set");
assertEquals("set", mock.setArgMethod(new HashSet<String>()));
assertEquals("set", mock.setArgMethod(Collections.<String>emptySet()));
}
@Test
public void should_help_out_with_unnecessary_casting_of_maps() {
//Below yields compiler warning:
//when(mock.setArgMethod(anySet())).thenReturn("set");
when(mock.forMap(anyMapOf(String.class, String.class))).thenReturn("map");
assertEquals("map", mock.forMap(new HashMap<String, String>()));
assertEquals("map", mock.forMap(Collections.<String, String>emptyMap()));
}
@Test
public void should_help_out_with_unnecessary_casting_of_collections() {
//Below yields compiler warning:
//when(mock.setArgMethod(anySet())).thenReturn("set");
when(mock.collectionArgMethod(anyCollectionOf(String.class))).thenReturn("collection");
assertEquals("collection", mock.collectionArgMethod(new ArrayList<String>()));
assertEquals("collection", mock.collectionArgMethod(Collections.<String>emptyList()));
}
@Test
public void should_help_out_with_unnecessary_casting_of_iterables() {
//Below yields compiler warning:
//when(mock.setArgMethod(anySet())).thenReturn("set");
when(mock.iterableArgMethod(anyIterableOf(String.class))).thenReturn("iterable");
assertEquals("iterable", mock.iterableArgMethod(new ArrayList<String>()));
assertEquals("iterable", mock.iterableArgMethod(Collections.<String>emptyList()));
}
@Test
public void should_help_out_with_unnecessary_casting_of_nullity_checks() {
when(mock.objectArgMethod(isNull(LinkedList.class))).thenReturn("string");
when(mock.objectArgMethod(notNull(LinkedList.class))).thenReturn("string");
when(mock.objectArgMethod(isNotNull(LinkedList.class))).thenReturn("string");
assertEquals("string", mock.objectArgMethod(null));
assertEquals("string", mock.objectArgMethod("foo"));
assertEquals("string", mock.objectArgMethod("foo"));
}
}