def testSomeIf(self): intr = JavaCardVM(None) intr.frames.push( JavaCardFrame([None, 6], [ 29, 5, 73, 97, 6, 29, 6, 69, 120, 3, 49, 30, 29, 109, 13, 30, 8, 65, 48, 30, 4, 65, 91, 49, 112, 243, 29, 120 ])) self._run(intr)
def _testBranch(self, opcode, params, stack, expectedIP): vm = JavaCardVM(None) vm.frame.stack = stack f = getattr(vm, opcode) offset = f(*params) if offset is None: offset = 0 self.assertEqual(expectedIP, offset)
def _testLocals(self, opcode, params, init, expected): vm = JavaCardVM(None) vm.frame.locals = JavaCardLocals() for index in init: vm.frame.locals[index] = init[index] f = getattr(vm, opcode) f(*params) for index in expected: self.assertEqual(expected[index], vm.frame.locals[index])
def test_gcdIteratif(self): intr = JavaCardVM(None) intr.frames.push( JavaCardFrame( [42, 56], [29, 97, 4, 28, 120, 28, 29, 73, 49, 29, 47, 30, 48, 112, 243 ])) self._run(intr) self.assertEquals(14, intr.getRetValue())
def test_gcdRecursif(self): intr = JavaCardVM(linkResolver()) intr.load(javatest_cap) intr.frames.push( JavaCardFrame( [42, 56], [29, 97, 4, 28, 120, 29, 28, 29, 73, 141, 0, 9, 120])) self._run(intr) self.assertEquals(14, intr.getRetValue())
def testEasy(self): intr = JavaCardVM(None) intr.frames.push(TestDummyFrame([None, 4])) intr.sload_1() intr.bspush(58) intr.sadd() intr.s2b() intr.sreturn() self.assertEquals(62, intr.getRetValue())
def test_callExtStaticMethod(self): intr = JavaCardVM(linkResolver()) intr.load(javatest_cap) intr.frames.push(JavaCardFrame([None, None], [17, 106, 129, 141, 0, 5, 122], 0)) try: self._run(intr) self.fail() except ISOException as ioe: self.assertEqual(0x6A81, ioe.getReason())
def test_objectCreation(self): intr = JavaCardVM(linkResolver()) intr.load(javatest_cap) intr.frames.push(TestDummyFrame([None])) intr.new(2) intr.dup() intr.invokespecial(3) self._run(intr) # dig into intr.invokevirtual(4) intr.returnn()
def __init__(self, jcversion=(3, 0, 1)): self.current_applet_aid = None # a2d(aid) => Applet self.applets = {} # channel => Applet self.selected = [None, None, None, None] # opened self.channels = [True, False, False, False] # current one self.current_channel = 0 # Create the VM self.vm = JavaCardVM(resolver.linkResolver(jcversion)) self.installJCFunctions()
def test_callVirtualMethod(self): intr = JavaCardVM(linkResolver()) intr.load(javatest_cap) intr.frames.push(TestDummyFrame([None])) intr.new(2) intr.dup() intr.invokespecial(3) self._run(intr) self.assertTrue(isinstance(intr.frame.stack[-1], Applet)) for i in xrange(1, 4): intr.dup() intr.sspush(i) intr.invokevirtual(7) self._run(intr) self.assertEqual(i, intr.frame.stack[-1]) intr.pop() intr.returnn()
def _teststack(self, opcode, params, init, expected): vm = JavaCardVM(None) vm.frame.stack = init f = getattr(vm, opcode) f(*params) self.assertEqual(expected, vm.frame.stack)
def _testRun(self, opcode, params, stack): vm = JavaCardVM(None) vm.frame.stack = stack f = getattr(vm, opcode) f(*params)