package net.bytebuddy.implementation.bytecode.collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import java.util.Arrays;
import java.util.Collection;
import static org.mockito.Mockito.verify;
@RunWith(Parameterized.class)
public class ArrayFactoryPrimitiveTest extends AbstractArrayFactoryTest {
private final Class<?> primitiveType;
private final int createOpcode;
private final int storeOpcode;
public ArrayFactoryPrimitiveTest(Class<?> primitiveType, int createOpcode, int storeOpcode) {
this.primitiveType = primitiveType;
this.createOpcode = createOpcode;
this.storeOpcode = storeOpcode;
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{boolean.class, Opcodes.T_BOOLEAN, Opcodes.BASTORE},
{byte.class, Opcodes.T_BYTE, Opcodes.BASTORE},
{short.class, Opcodes.T_SHORT, Opcodes.SASTORE},
{char.class, Opcodes.T_CHAR, Opcodes.CASTORE},
{int.class, Opcodes.T_INT, Opcodes.IASTORE},
{long.class, Opcodes.T_LONG, Opcodes.LASTORE},
{float.class, Opcodes.T_FLOAT, Opcodes.FASTORE},
{double.class, Opcodes.T_DOUBLE, Opcodes.DASTORE},
});
}
@Test
public void testArrayCreation() throws Exception {
testCreationUsing(primitiveType, storeOpcode);
}
@Override
protected void verifyArrayCreation(MethodVisitor methodVisitor) {
verify(methodVisitor).visitIntInsn(Opcodes.NEWARRAY, createOpcode);
}
}