package net.bytebuddy.dynamic.scaffold;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.implementation.Implementation;
import net.bytebuddy.implementation.attribute.AnnotationValueFilter;
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 org.objectweb.asm.ClassVisitor;
import static org.mockito.Mockito.*;
public class TypeInitializerDrainDefaultTest {
@Rule
public TestRule mockitoRule = new MockitoRule(this);
@Mock
private TypeDescription instrumentedType;
@Mock
private TypeWriter.MethodPool methodPool;
@Mock
private AnnotationValueFilter.Factory annotationValueFilterFactory;
@Mock
private ClassVisitor classVisitor;
@Mock
private TypeInitializer typeInitializer;
@Mock
private Implementation.Context implementationContext;
@Mock
private TypeWriter.MethodPool.Record record, transformed;
@Test
public void testDrain() throws Exception {
when(methodPool.target(new MethodDescription.Latent.TypeInitializer(instrumentedType))).thenReturn(record);
when(typeInitializer.wrap(record)).thenReturn(transformed);
new TypeInitializer.Drain.Default(instrumentedType, methodPool, annotationValueFilterFactory).apply(classVisitor, typeInitializer, implementationContext);
verify(transformed).apply(classVisitor, implementationContext, annotationValueFilterFactory);
verifyNoMoreInteractions(transformed);
}
@Test
public void testObjectProperties() throws Exception {
ObjectPropertyAssertion.of(TypeInitializer.Drain.Default.class).apply();
}
}