use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class DefaultValueTest method testDefaultValue.
@Test
public void testDefaultValue() throws Exception {
StackManipulation stackManipulation = DefaultValue.of(typeDescription);
assertThat(stackManipulation.isValid(), is(true));
StackManipulation.Size size = stackManipulation.apply(methodVisitor, implementationContext);
assertThat(size.getSizeImpact(), is(StackSize.of(type).getSize()));
assertThat(size.getMaximalSize(), is(StackSize.of(type).getSize()));
if (opcode == -1) {
verifyZeroInteractions(methodVisitor);
} else {
verify(methodVisitor).visitInsn(opcode);
verifyNoMoreInteractions(methodVisitor);
}
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class DoubleConstantTest method testBiPush.
@Test
public void testBiPush() throws Exception {
StackManipulation doubleConstant = DoubleConstant.forValue(value);
assertThat(doubleConstant.isValid(), is(true));
StackManipulation.Size size = doubleConstant.apply(methodVisitor, implementationContext);
assertThat(size.getSizeImpact(), is(2));
assertThat(size.getMaximalSize(), is(2));
verify(methodVisitor).visitLdcInsn(value);
verifyNoMoreInteractions(methodVisitor);
verifyZeroInteractions(implementationContext);
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class FieldConstantTest method testConstantCreationModernInvisible.
@Test
public void testConstantCreationModernInvisible() throws Exception {
when(classFileVersion.isAtLeast(ClassFileVersion.JAVA_V5)).thenReturn(true);
when(declaringType.isVisibleTo(instrumentedType)).thenReturn(false);
StackManipulation stackManipulation = new FieldConstant(fieldDescription);
assertThat(stackManipulation.isValid(), is(true));
StackManipulation.Size size = stackManipulation.apply(methodVisitor, implementationContext);
assertThat(size.getSizeImpact(), is(1));
assertThat(size.getMaximalSize(), is(2));
verify(methodVisitor).visitLdcInsn(BAZ);
verify(methodVisitor).visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(Class.class), "forName", Type.getMethodDescriptor(Type.getType(Class.class), Type.getType(String.class)), false);
verify(methodVisitor).visitLdcInsn(BAR);
verify(methodVisitor).visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Class", "getDeclaredField", "(Ljava/lang/String;)Ljava/lang/reflect/Field;", false);
verifyNoMoreInteractions(methodVisitor);
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class PrimitiveUnboxingDelegateDirectTest method testImplicitBoxing.
@Test
public void testImplicitBoxing() throws Exception {
TypeDescription.Generic referenceTypeDescription = mock(TypeDescription.Generic.class);
when(referenceTypeDescription.asGenericType()).thenReturn(referenceTypeDescription);
StackManipulation primitiveStackManipulation = PrimitiveUnboxingDelegate.forReferenceType(referenceTypeDescription).assignUnboxedTo(primitiveTypeDescription, chainedAssigner, Assigner.Typing.DYNAMIC);
assertThat(primitiveStackManipulation.isValid(), is(true));
StackManipulation.Size size = primitiveStackManipulation.apply(methodVisitor, implementationContext);
assertThat(size.getSizeImpact(), is(sizeChange));
assertThat(size.getMaximalSize(), is(sizeChange));
verify(methodVisitor).visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(wrapperType), unboxingMethodName, unboxingMethodDescriptor, false);
verifyNoMoreInteractions(methodVisitor);
verify(chainedAssigner).assign(referenceTypeDescription, new TypeDescription.Generic.OfNonGenericType.ForLoadedType(wrapperType), Assigner.Typing.DYNAMIC);
verifyNoMoreInteractions(chainedAssigner);
verify(stackManipulation, atLeast(1)).isValid();
verify(stackManipulation).apply(methodVisitor, implementationContext);
verifyNoMoreInteractions(stackManipulation);
}
use of net.bytebuddy.implementation.bytecode.StackManipulation in project byte-buddy by raphw.
the class PrimitiveWideningDelegateNontrivialTest method testWideningConversion.
@Test
public void testWideningConversion() throws Exception {
StackManipulation stackManipulation = PrimitiveWideningDelegate.forPrimitive(sourceTypeDescription).widenTo(targetTypeDescription);
assertThat(stackManipulation.isValid(), is(true));
StackManipulation.Size size = stackManipulation.apply(methodVisitor, implementationContext);
assertThat(size.getSizeImpact(), is(sizeChange));
assertThat(size.getMaximalSize(), is(Math.max(0, sizeChange)));
verify(methodVisitor).visitInsn(opcode);
verifyNoMoreInteractions(methodVisitor);
}
Aggregations