package com.ikokoon.serenity.instrumentation;
import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayOutputStream;
import org.junit.Before;
import org.junit.Test;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.MethodAdapter;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import com.ikokoon.serenity.ATest;
import com.ikokoon.serenity.instrumentation.complexity.ComplexityClassAdapter;
import com.ikokoon.serenity.instrumentation.complexity.ComplexityMethodAdapter;
import com.ikokoon.serenity.instrumentation.coverage.CoverageClassAdapter;
import com.ikokoon.serenity.instrumentation.dependency.DependencyClassAdapter;
import com.ikokoon.serenity.instrumentation.profiling.ProfilingClassAdapter;
public class VisitorFactoryTest extends ATest {
// private IDataBase dataBase;
@Before
public void clear() {
// dataBase = IDataBase.DataBaseManager.getDataBase(DataBaseRam.class, IConstants.DATABASE_FILE_RAM, mockInternalDataBase);
// DataBaseToolkit.clear(dataBase);
// Collector.initialize(dataBase);
}
@Test
@SuppressWarnings("unchecked")
public void getClassVisitor() throws Exception {
byte[] classBytes = getClassBytes(className);
byte[] sourceBytes = getSourceBytes(className);
Class[] adapters = new Class[] { CoverageClassAdapter.class, ComplexityClassAdapter.class, DependencyClassAdapter.class,
ProfilingClassAdapter.class };
ByteArrayOutputStream source = new ByteArrayOutputStream();
source.write(sourceBytes);
ClassVisitor visitor = VisitorFactory.getClassVisitor(adapters, className, classBytes, source);
assertNotNull(visitor);
MethodVisitor methodVisitor = VisitorFactory.getMethodVisitor(new MethodAdapter(null), ComplexityMethodAdapter.class, Opcodes.ACC_PUBLIC,
className, methodName, "methodDescription");
assertNotNull(methodVisitor);
}
}