package net.bytebuddy.matcher;
import net.bytebuddy.test.utility.MockitoRule;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
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 CollectionElementMatcherTest extends AbstractElementMatcherTest<CollectionElementMatcher<?>> {
@Rule
public TestRule mockitoRule = new MockitoRule(this);
private Iterable<Object> iterable;
private Object elemet;
@Mock
private ElementMatcher<? super Object> elementMatcher;
@SuppressWarnings("unchecked")
public CollectionElementMatcherTest() {
super((Class<CollectionElementMatcher<?>>) (Object) CollectionElementMatcher.class, "with");
}
@Before
public void setUp() throws Exception {
elemet = new Object();
iterable = Arrays.asList(new Object(), elemet);
}
@Test
public void testMatch() throws Exception {
when(elementMatcher.matches(elemet)).thenReturn(true);
assertThat(new CollectionElementMatcher<Object>(1, elementMatcher).matches(iterable), is(true));
verify(elementMatcher).matches(elemet);
verifyNoMoreInteractions(elementMatcher);
}
@Test
public void testNoMatch() throws Exception {
when(elementMatcher.matches(elemet)).thenReturn(false);
assertThat(new CollectionElementMatcher<Object>(1, elementMatcher).matches(iterable), is(false));
verify(elementMatcher).matches(elemet);
verifyNoMoreInteractions(elementMatcher);
}
@Test
public void testNoMatchIndex() throws Exception {
assertThat(new CollectionElementMatcher<Object>(2, elementMatcher).matches(iterable), is(false));
verifyZeroInteractions(elementMatcher);
}
}