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 ClassLoaderHierarchyMatcherTest extends AbstractElementMatcherTest<ClassLoaderHierarchyMatcher<?>> { @Mock private ElementMatcher<? super ClassLoader> classLoaderMatcher; @Mock private ClassLoader classLoader; @SuppressWarnings("unchecked") public ClassLoaderHierarchyMatcherTest() { super((Class<ClassLoaderHierarchyMatcher<?>>) (Object) ClassLoaderHierarchyMatcher.class, "hasChild"); } @Test public void testMatchesChild() throws Exception { when(classLoaderMatcher.matches(classLoader)).thenReturn(true); assertThat(new ClassLoaderHierarchyMatcher<ClassLoader>(classLoaderMatcher).matches(classLoader), is(true)); verify(classLoaderMatcher).matches(classLoader); verifyNoMoreInteractions(classLoaderMatcher); } @Test public void testMatchesParent() throws Exception { when(classLoaderMatcher.matches(null)).thenReturn(true); assertThat(new ClassLoaderHierarchyMatcher<ClassLoader>(classLoaderMatcher).matches(classLoader), is(true)); verify(classLoaderMatcher).matches(classLoader); verify(classLoaderMatcher).matches(null); verifyNoMoreInteractions(classLoaderMatcher); } @Test public void testNoMatch() throws Exception { assertThat(new ClassLoaderHierarchyMatcher<ClassLoader>(classLoaderMatcher).matches(classLoader), is(false)); verify(classLoaderMatcher).matches(classLoader); verify(classLoaderMatcher).matches(null); verifyNoMoreInteractions(classLoaderMatcher); } }