package net.bytebuddy.dynamic; import net.bytebuddy.description.NamedElement; import net.bytebuddy.test.utility.MockitoRule; import net.bytebuddy.test.utility.ObjectPropertyAssertion; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.mockito.Mock; import java.util.HashMap; import java.util.Map; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.*; public class ClassFileLocatorPackageDiscriminatingTest { private static final String FOO = "foo", BAR = "bar"; @Rule public TestRule mockitoRule = new MockitoRule(this); private ClassFileLocator classFileLocator; @Mock private ClassFileLocator foo, bar; @Mock private ClassFileLocator.Resolution fooResulution, barResolution; @Before public void setUp() throws Exception { when(foo.locate(FOO + "." + BAR)).thenReturn(fooResulution); when(bar.locate(BAR)).thenReturn(barResolution); Map<String, ClassFileLocator> map = new HashMap<String, ClassFileLocator>(); map.put(FOO, foo); map.put(NamedElement.EMPTY_NAME, bar); classFileLocator = new ClassFileLocator.PackageDiscriminating(map); } @Test public void testValidLocation() throws Exception { assertThat(classFileLocator.locate(FOO + "." + BAR), is(fooResulution)); } @Test public void testValidLocationDefaultPackage() throws Exception { assertThat(classFileLocator.locate(BAR), is(barResolution)); } @Test public void testInvalidLocation() throws Exception { assertThat(classFileLocator.locate(BAR + "." + FOO).isResolved(), is(false)); } @Test public void testClose() throws Exception { classFileLocator.close(); verify(foo).close(); verifyNoMoreInteractions(foo); verify(bar).close(); verifyNoMoreInteractions(bar); } @Test public void testObjectProperties() throws Exception { ObjectPropertyAssertion.of(ClassFileLocator.PackageDiscriminating.class).apply(); } }