use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class FieldAccessOtherTest method testEnumerationDescription.
@Test
public void testEnumerationDescription() throws Exception {
when(fieldDescription.isPublic()).thenReturn(true);
when(fieldDescription.isStatic()).thenReturn(true);
when(fieldDescription.isEnum()).thenReturn(true);
when(fieldDescription.getActualName()).thenReturn(FOO);
StackManipulation stackManipulation = FieldAccess.forEnumeration(enumerationDescription);
assertThat(stackManipulation.isValid(), is(true));
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class FieldAccessOtherTest method testGenericFieldAccessGetterEqualErasure.
@Test
public void testGenericFieldAccessGetterEqualErasure() throws Exception {
TypeDescription declaredErasure = mock(TypeDescription.class);
when(genericType.asErasure()).thenReturn(declaredErasure);
when(declaredType.asErasure()).thenReturn(declaredErasure);
StackManipulation stackManipulation = FieldAccess.forField(genericField).read();
assertThat(stackManipulation.isValid(), is(true));
assertThat(stackManipulation, is(FieldAccess.forField(fieldDescription).read()));
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class HandleInvocationTest method testInvocationDecreasingStack.
@Test
public void testInvocationDecreasingStack() throws Exception {
JavaConstant.MethodType methodType = JavaConstant.MethodType.of(void.class, Object.class);
StackManipulation stackManipulation = new HandleInvocation(methodType);
assertThat(stackManipulation.isValid(), is(true));
StackManipulation.Size size = stackManipulation.apply(methodVisitor, implementationContext);
assertThat(size.getSizeImpact(), is(-1));
assertThat(size.getMaximalSize(), is(0));
verify(methodVisitor).visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/invoke/MethodHandle", "invokeExact", "(Ljava/lang/Object;)V", false);
verifyNoMoreInteractions(methodVisitor);
verifyZeroInteractions(implementationContext);
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class MethodInvocationDynamicTest method testIllegalBootstrap.
@Test
public void testIllegalBootstrap() throws Exception {
StackManipulation stackManipulation = MethodInvocation.invoke(methodDescription).dynamic(FOO, returnType, Arrays.asList(firstType, secondType), Collections.singletonList(argument));
assertThat(stackManipulation.isValid(), is(false));
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class MethodInvocationDynamicTest method testDynamicConstructorBootstrap.
@Test
public void testDynamicConstructorBootstrap() throws Exception {
when(methodDescription.isBootstrap()).thenReturn(true);
when(methodDescription.isConstructor()).thenReturn(true);
StackManipulation stackManipulation = MethodInvocation.invoke(methodDescription).dynamic(FOO, returnType, Arrays.asList(firstType, secondType), Collections.singletonList(argument));
assertThat(stackManipulation.isValid(), is(true));
StackManipulation.Size size = stackManipulation.apply(methodVisitor, implementationContext);
assertThat(size.getSizeImpact(), is(0));
assertThat(size.getMaximalSize(), is(0));
verify(methodVisitor).visitInvokeDynamicInsn(FOO, "(" + FOO + BAR + ")" + QUX, new Handle(Opcodes.H_NEWINVOKESPECIAL, BAR, QUX, BAZ, false), argument);
}
Aggregations