Search in sources :

Example 81 with StackManipulation

use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.

the class FieldAccessOtherTest method testGenericFieldAccessPutter.

@Test
public void testGenericFieldAccessPutter() throws Exception {
    TypeDescription genericErasure = mock(TypeDescription.class), declaredErasure = mock(TypeDescription.class);
    when(genericType.asErasure()).thenReturn(genericErasure);
    when(declaredType.asErasure()).thenReturn(declaredErasure);
    StackManipulation stackManipulation = FieldAccess.forField(genericField).write();
    assertThat(stackManipulation.isValid(), is(true));
    assertThat(stackManipulation, is(FieldAccess.forField(fieldDescription).write()));
}
Also used : StackManipulation(net.bytebuddy.implementation.bytecode.StackManipulation) TypeDescription(net.bytebuddy.description.type.TypeDescription) Test(org.junit.Test)

Example 82 with StackManipulation

use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.

the class FieldAccessOtherTest method testEnumerationDescriptionWithIllegalOwnership.

@Test
public void testEnumerationDescriptionWithIllegalOwnership() throws Exception {
    when(fieldDescription.isPublic()).thenReturn(true);
    when(fieldDescription.isStatic()).thenReturn(false);
    when(fieldDescription.isEnum()).thenReturn(true);
    when(fieldDescription.getActualName()).thenReturn(FOO);
    StackManipulation stackManipulation = FieldAccess.forEnumeration(enumerationDescription);
    assertThat(stackManipulation.isValid(), is(false));
}
Also used : StackManipulation(net.bytebuddy.implementation.bytecode.StackManipulation) Test(org.junit.Test)

Example 83 with StackManipulation

use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.

the class FieldAccessOtherTest method testGenericFieldAccessGetter.

@Test
public void testGenericFieldAccessGetter() throws Exception {
    TypeDescription genericErasure = mock(TypeDescription.class), declaredErasure = mock(TypeDescription.class);
    when(genericErasure.asErasure()).thenReturn(genericErasure);
    when(genericType.asErasure()).thenReturn(genericErasure);
    when(declaredType.asErasure()).thenReturn(declaredErasure);
    StackManipulation stackManipulation = FieldAccess.forField(genericField).read();
    assertThat(stackManipulation.isValid(), is(true));
    assertThat(stackManipulation, is((StackManipulation) new StackManipulation.Compound(FieldAccess.forField(fieldDescription).read(), TypeCasting.to(genericErasure))));
}
Also used : StackManipulation(net.bytebuddy.implementation.bytecode.StackManipulation) TypeDescription(net.bytebuddy.description.type.TypeDescription) Test(org.junit.Test)

Example 84 with StackManipulation

use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.

the class HandleInvocationTest method testInvocationIncreasingStack.

@Test
public void testInvocationIncreasingStack() throws Exception {
    JavaConstant.MethodType methodType = JavaConstant.MethodType.of(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(1));
    verify(methodVisitor).visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/invoke/MethodHandle", "invokeExact", "()Ljava/lang/Object;", false);
    verifyNoMoreInteractions(methodVisitor);
    verifyZeroInteractions(implementationContext);
}
Also used : StackManipulation(net.bytebuddy.implementation.bytecode.StackManipulation) JavaConstant(net.bytebuddy.utility.JavaConstant) Test(org.junit.Test)

Example 85 with StackManipulation

use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.

the class MethodInvocationGenericTest method testGenericMethodErasureEqual.

@Test
public void testGenericMethodErasureEqual() throws Exception {
    when(methodReturnType.asErasure()).thenReturn(declaredErasure);
    StackManipulation stackManipulation = MethodInvocation.invoke(methodDescription);
    assertThat(stackManipulation.isValid(), is(true));
    assertThat(stackManipulation, is((StackManipulation) MethodInvocation.invoke(declaredMethod)));
}
Also used : StackManipulation(net.bytebuddy.implementation.bytecode.StackManipulation) Test(org.junit.Test)

Aggregations

StackManipulation (net.bytebuddy.implementation.bytecode.StackManipulation)92 Test (org.junit.Test)85 TypeDescription (net.bytebuddy.description.type.TypeDescription)18 Implementation (net.bytebuddy.implementation.Implementation)5 Assigner (net.bytebuddy.implementation.bytecode.assign.Assigner)5 MethodDescription (net.bytebuddy.description.method.MethodDescription)4 ForLoadedType (net.bytebuddy.description.type.TypeDescription.ForLoadedType)4 Goto (org.curioswitch.common.protobuf.json.bytebuddy.Goto)4 MethodVisitor (org.objectweb.asm.MethodVisitor)4 ArrayList (java.util.ArrayList)3 Label (net.bytebuddy.jar.asm.Label)3 SetJumpTargetLabel (org.curioswitch.common.protobuf.json.bytebuddy.SetJumpTargetLabel)3 FieldDescriptor (com.google.protobuf.Descriptors.FieldDescriptor)2 Type (java.lang.reflect.Type)2 FieldDescription (net.bytebuddy.description.field.FieldDescription)2 JavaConstant (net.bytebuddy.utility.JavaConstant)2 ForLoadedType (org.apache.beam.vendor.bytebuddy.v1_11_0.net.bytebuddy.description.type.TypeDescription.ForLoadedType)2 DynamicType (org.apache.beam.vendor.bytebuddy.v1_11_0.net.bytebuddy.dynamic.DynamicType)2 StackManipulation (org.apache.beam.vendor.bytebuddy.v1_11_0.net.bytebuddy.implementation.bytecode.StackManipulation)2 IfTrue (org.curioswitch.common.protobuf.json.bytebuddy.IfTrue)2