package net.bytebuddy.pool;
import net.bytebuddy.test.utility.MockitoRule;
import net.bytebuddy.test.utility.ObjectPropertyAssertion;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import org.mockito.Mock;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
public class TypePoolCacheProviderTest {
private static final String FOO = "foo";
@Rule
public TestRule mockitoRule = new MockitoRule(this);
@Mock
private TypePool.Resolution resolution;
@Test
public void testNoOp() throws Exception {
assertThat(TypePool.CacheProvider.NoOp.INSTANCE.find(FOO), nullValue(TypePool.Resolution.class));
assertThat(TypePool.CacheProvider.NoOp.INSTANCE.register(FOO, resolution), sameInstance(resolution));
assertThat(TypePool.CacheProvider.NoOp.INSTANCE.find(FOO), nullValue(TypePool.Resolution.class));
TypePool.CacheProvider.NoOp.INSTANCE.clear();
}
@Test
public void testSimple() throws Exception {
TypePool.CacheProvider simple = new TypePool.CacheProvider.Simple();
assertThat(simple.find(FOO), nullValue(TypePool.Resolution.class));
assertThat(simple.register(FOO, resolution), sameInstance(resolution));
assertThat(simple.find(FOO), sameInstance(resolution));
TypePool.Resolution resolution = mock(TypePool.Resolution.class);
assertThat(simple.register(FOO, resolution), sameInstance(this.resolution));
assertThat(simple.find(FOO), sameInstance(this.resolution));
simple.clear();
assertThat(simple.find(FOO), nullValue(TypePool.Resolution.class));
assertThat(simple.register(FOO, resolution), sameInstance(resolution));
assertThat(simple.find(FOO), sameInstance(resolution));
}
@Test
public void testSimpleObjectProperties() throws Exception {
ObjectPropertyAssertion.of(TypePool.CacheProvider.NoOp.class).apply();
}
}