package net.bytebuddy.description.type;
import net.bytebuddy.ClassFileVersion;
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 static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.when;
public class TypeDescriptionGenericOfParameterizedTypeRenderingDelegateTest {
private static final String FOO = "foo", BAR = "bar";
@Rule
public TestRule mockitoRule = new MockitoRule(this);
@Mock
private TypeDescription typeDescription;
@Mock
private TypeDescription.Generic ownerType;
@Before
public void setUp() throws Exception {
when(typeDescription.getName()).thenReturn(FOO + "." + BAR);
when(typeDescription.getSimpleName()).thenReturn(BAR);
}
@Test
public void testJava9Capable() throws Exception {
StringBuilder stringBuilder = new StringBuilder();
TypeDescription.Generic.OfParameterizedType.RenderingDelegate.JAVA_9_CAPABLE_VM.apply(stringBuilder, typeDescription, ownerType);
assertThat(stringBuilder.toString(), is("$" + BAR));
}
@Test
public void testLegacyParameterized() throws Exception {
when(ownerType.getSort()).thenReturn(TypeDefinition.Sort.PARAMETERIZED);
StringBuilder stringBuilder = new StringBuilder();
TypeDescription.Generic.OfParameterizedType.RenderingDelegate.LEGACY_VM.apply(stringBuilder, typeDescription, ownerType);
assertThat(stringBuilder.toString(), is("." + BAR));
}
@Test
public void testLegacyNonParameterized() throws Exception {
when(ownerType.getSort()).thenReturn(TypeDefinition.Sort.NON_GENERIC);
StringBuilder stringBuilder = new StringBuilder();
TypeDescription.Generic.OfParameterizedType.RenderingDelegate.LEGACY_VM.apply(stringBuilder, typeDescription, ownerType);
assertThat(stringBuilder.toString(), is("." + FOO + "." + BAR));
}
@Test
public void testCurrent() throws Exception {
assertThat(TypeDescription.Generic.OfParameterizedType.RenderingDelegate.CURRENT, is(ClassFileVersion.ofThisVm().isAtLeast(ClassFileVersion.JAVA_V9)
? TypeDescription.Generic.OfParameterizedType.RenderingDelegate.JAVA_9_CAPABLE_VM
: TypeDescription.Generic.OfParameterizedType.RenderingDelegate.LEGACY_VM));
}
@Test
public void testObjectProperties() throws Exception {
ObjectPropertyAssertion.of(TypeDescription.Generic.OfParameterizedType.RenderingDelegate.class).apply();
}
}