package net.bytebuddy.dynamic.scaffold; 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.MethodVisitor; import org.objectweb.asm.Opcodes; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; public class TypeWriterDefaultForInliningInitializationHandlerAppendingFrameWriterActiveTest { @Rule public TestRule mockitoRule = new MockitoRule(this); @Mock private MethodVisitor methodVisitor; private TypeWriter.Default.ForInlining.InitializationHandler.Appending.FrameWriter frameWriter = new TypeWriter.Default.ForInlining.InitializationHandler.Appending.FrameWriter.Active(); @Test public void testNoFrame() throws Exception { frameWriter.emitFrame(methodVisitor); verify(methodVisitor).visitFrame(Opcodes.F_SAME, 0, new Object[0], 0, new Object[0]); verifyZeroInteractions(methodVisitor); } @Test public void testSameFrame() throws Exception { frameWriter.onFrame(Opcodes.F_SAME, 0); frameWriter.emitFrame(methodVisitor); verify(methodVisitor).visitFrame(Opcodes.F_SAME, 0, new Object[0], 0, new Object[0]); verifyZeroInteractions(methodVisitor); } @Test public void testSameFrame1() throws Exception { frameWriter.onFrame(Opcodes.F_SAME1, 0); frameWriter.emitFrame(methodVisitor); verify(methodVisitor).visitFrame(Opcodes.F_SAME, 0, new Object[0], 0, new Object[0]); verifyZeroInteractions(methodVisitor); } @Test public void testAppendChop() throws Exception { frameWriter.onFrame(Opcodes.F_APPEND, 2); frameWriter.onFrame(Opcodes.F_CHOP, 1); frameWriter.emitFrame(methodVisitor); verify(methodVisitor).visitFrame(Opcodes.F_CHOP, 1, new Object[0], 0, new Object[0]); verifyZeroInteractions(methodVisitor); } @Test public void testFull() throws Exception { frameWriter.onFrame(Opcodes.F_FULL, 5); frameWriter.onFrame(Opcodes.F_CHOP, 1); frameWriter.emitFrame(methodVisitor); verify(methodVisitor).visitFrame(Opcodes.F_FULL, 0, new Object[0], 0, new Object[0]); verifyZeroInteractions(methodVisitor); } @Test public void testNew() throws Exception { frameWriter.onFrame(Opcodes.F_NEW, 5); frameWriter.onFrame(Opcodes.F_CHOP, 1); frameWriter.emitFrame(methodVisitor); verify(methodVisitor).visitFrame(Opcodes.F_FULL, 0, new Object[0], 0, new Object[0]); verifyZeroInteractions(methodVisitor); } @Test(expected = IllegalStateException.class) public void testUnexpected() throws Exception { frameWriter.onFrame(-2, 0); } }