package net.bytebuddy.matcher;
import org.junit.Test;
import org.mockito.Mock;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.*;
public class ElementMatcherJunctionConjunctionTest extends AbstractElementMatcherTest<ElementMatcher.Junction.Conjunction<?>> {
@Mock
private ElementMatcher<? super Object> first, second;
@SuppressWarnings("unchecked")
public ElementMatcherJunctionConjunctionTest() {
super((Class<? extends ElementMatcher.Junction.Conjunction<?>>) (Object) ElementMatcher.Junction.Conjunction.class, "");
}
@Test
public void testApplicationBoth() throws Exception {
Object target = new Object();
when(first.matches(target)).thenReturn(true);
when(second.matches(target)).thenReturn(true);
assertThat(new ElementMatcher.Junction.Conjunction<Object>(first, second).matches(target), is(true));
verify(first).matches(target);
verifyNoMoreInteractions(first);
verify(second).matches(target);
verifyNoMoreInteractions(second);
}
@Test
public void testApplicationFirstOnly() throws Exception {
Object target = new Object();
when(first.matches(target)).thenReturn(false);
assertThat(new ElementMatcher.Junction.Conjunction<Object>(first, second).matches(target), is(false));
verify(first).matches(target);
verifyNoMoreInteractions(first);
verifyZeroInteractions(second);
}
@Test
public void testApplicationBothNegative() throws Exception {
Object target = new Object();
when(first.matches(target)).thenReturn(true);
when(second.matches(target)).thenReturn(false);
assertThat(new ElementMatcher.Junction.Conjunction<Object>(first, second).matches(target), is(false));
verify(first).matches(target);
verifyNoMoreInteractions(first);
verify(second).matches(target);
verifyNoMoreInteractions(second);
}
@Override
protected String makeRegex(String startsWith) {
return "^(.* and .*)$";
}
}