package net.bytebuddy.matcher; import net.bytebuddy.description.type.TypeDefinition; import net.bytebuddy.description.type.TypeDescription; import org.junit.Before; 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 ErasureMatcherTest extends AbstractElementMatcherTest<ErasureMatcher<?>> { @Mock private TypeDefinition typeDefinition; @Mock private TypeDescription typeDescription; @Mock private ElementMatcher<TypeDescription> elementMatcher; @SuppressWarnings("unchecked") public ErasureMatcherTest() { super((Class<? extends ErasureMatcher<?>>) (Object) ErasureMatcher.class, "erasure"); } @Before public void setUp() throws Exception { when(typeDefinition.asErasure()).thenReturn(typeDescription); } @Test public void testMatch() throws Exception { when(elementMatcher.matches(typeDescription)).thenReturn(true); when(typeDefinition.getSort()).thenReturn(TypeDefinition.Sort.NON_GENERIC); assertThat(new ErasureMatcher<TypeDefinition>(elementMatcher).matches(typeDefinition), is(true)); verify(typeDefinition).asErasure(); verifyNoMoreInteractions(typeDefinition); verify(elementMatcher).matches(typeDescription); verifyNoMoreInteractions(elementMatcher); verifyZeroInteractions(typeDescription); } @Test public void testNoMatch() throws Exception { when(elementMatcher.matches(typeDescription)).thenReturn(false); when(typeDefinition.getSort()).thenReturn(TypeDefinition.Sort.NON_GENERIC); assertThat(new ErasureMatcher<TypeDefinition>(elementMatcher).matches(typeDefinition), is(false)); verify(typeDefinition).asErasure(); verifyNoMoreInteractions(typeDefinition); verify(elementMatcher).matches(typeDescription); verifyNoMoreInteractions(elementMatcher); verifyZeroInteractions(typeDescription); } }