package net.bytebuddy.matcher;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import java.util.Arrays;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.*;
public class CollectionItemMatcherTest extends AbstractElementMatcherTest<CollectionItemMatcher<?>> {
private Iterable<Object> iterable;
private Object first, second;
@Mock
private ElementMatcher<Object> elementMatcher;
@SuppressWarnings("unchecked")
public CollectionItemMatcherTest() {
super((Class<CollectionItemMatcher<?>>) (Object) CollectionItemMatcher.class, "whereOne");
}
@Before
public void setUp() throws Exception {
first = new Object();
second = new Object();
iterable = Arrays.asList(first, second);
}
@Test
public void testMatchFirst() throws Exception {
when(elementMatcher.matches(first)).thenReturn(true);
assertThat(new CollectionItemMatcher<Object>(elementMatcher).matches(iterable), is(true));
verify(elementMatcher).matches(first);
verifyNoMoreInteractions(elementMatcher);
}
@Test
public void testMatchSecond() throws Exception {
when(elementMatcher.matches(first)).thenReturn(false);
when(elementMatcher.matches(second)).thenReturn(true);
assertThat(new CollectionItemMatcher<Object>(elementMatcher).matches(iterable), is(true));
verify(elementMatcher).matches(first);
verify(elementMatcher).matches(second);
verifyNoMoreInteractions(elementMatcher);
}
@Test
public void testNoMatch() throws Exception {
when(elementMatcher.matches(first)).thenReturn(false);
when(elementMatcher.matches(second)).thenReturn(false);
assertThat(new CollectionItemMatcher<Object>(elementMatcher).matches(iterable), is(false));
verify(elementMatcher).matches(first);
verify(elementMatcher).matches(second);
verifyNoMoreInteractions(elementMatcher);
}
}