package com.licel.jcardsim.base;
import com.licel.jcardsim.samples.MultiInstanceApplet;
import com.licel.jcardsim.utils.AIDUtil;
import com.licel.jcardsim.utils.ByteUtil;
import javacard.framework.AID;
import javacard.framework.ISO7816;
import junit.framework.TestCase;
public class DeleteTest extends TestCase {
private static final byte CLA = (byte) 0x80;
private static final byte INS_GET_COUNT = 2;
public DeleteTest(String name) {
super(name);
}
public void testDeleteWorks() {
byte[] result;
AID aid1 = AIDUtil.create("d0000cafe00001");
AID aid2 = AIDUtil.create("d0000cafe00002");
Simulator simulator = new Simulator();
// install first instance
simulator.installApplet(aid1, MultiInstanceApplet.class);
simulator.selectApplet(aid1);
// check instance counter == 1
result = simulator.transmitCommand(new byte[]{CLA, INS_GET_COUNT, 0, 0});
assertEquals(1, ByteUtil.getShort(result, 0));
assertEquals(ISO7816.SW_NO_ERROR, ByteUtil.getSW(result));
// install second instance
simulator.installApplet(aid2, MultiInstanceApplet.class);
// check instance counter == 2
result = simulator.transmitCommand(new byte[]{CLA, INS_GET_COUNT, 0, 0});
assertEquals(2, ByteUtil.getShort(result, 0));
assertEquals(ISO7816.SW_NO_ERROR, ByteUtil.getSW(result));
// delete instance 1
simulator.deleteApplet(aid1);
// check instance counter == 1
simulator.selectApplet(aid2);
result = simulator.transmitCommand(new byte[]{CLA, INS_GET_COUNT, 0, 0});
assertEquals(1, ByteUtil.getShort(result, 0));
assertEquals(ISO7816.SW_NO_ERROR, ByteUtil.getSW(result));
}
}