package org.pitest.mutationtest.mocksupport; import static org.mockito.Mockito.verify; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; public class JavassistInputStreamInterceptorAdapaterTest { private JavassistInputStreamInterceptorMethodVisitor testee; @Mock private MethodVisitor mv; @Before public void setUp() { MockitoAnnotations.initMocks(this); this.testee = new JavassistInputStreamInterceptorMethodVisitor(this.mv, "com.example.TheInterceptorClassName"); } @Test public void shouldNotInterceptNormalInvokeInterfaceCalls() { this.testee.visitMethodInsn(Opcodes.INVOKEINTERFACE, "foo", "bar", "far", false); verify(this.mv).visitMethodInsn(Opcodes.INVOKEINTERFACE, "foo", "bar", "far", false); } @Test public void shouldNotInterceptNormalInvokeStaticCalls() { this.testee.visitMethodInsn(Opcodes.INVOKESTATIC, "foo", "bar", "far", false); verify(this.mv).visitMethodInsn(Opcodes.INVOKESTATIC, "foo", "bar", "far", false); } @Test public void shouldNotInterceptCallsToMethodsCalledOpenClassFileNotInJavaAssist() { this.testee.visitMethodInsn(Opcodes.INVOKEINTERFACE, "foo", "openClassfile", "far", false); verify(this.mv).visitMethodInsn(Opcodes.INVOKEINTERFACE, "foo", "openClassfile", "far", false); } @Test public void shouldInterceptCallsToOpenClassFileInJavaAssist() { this.testee.visitMethodInsn(Opcodes.INVOKEINTERFACE, "javassist/ClassPath", "openClassfile", "far", false); verify(this.mv).visitMethodInsn(Opcodes.INVOKESTATIC, "com.example.TheInterceptorClassName", "openClassfile", "(Ljava/lang/Object;Ljava/lang/String;)Ljava/io/InputStream;", false); } }