def test_parse_method_ret(self): s = ( ".method public void main() {\n " ".locals init (int32 first,\n" "int32 second,\n" "int32 result)\n" "ret\n" " }" ) vm = VM() p = ParserContext(s) mp = MethodParser() m = mp.parse(p) locals = m.locals self.assertEqual(len(locals), 3) self.assertEqual(locals[0].name, "first") self.assertEqual(locals[0].alias, None) self.assertEqual(locals[0].type, Types.Int32) self.assertEqual(locals[1].name, "second") self.assertEqual(locals[1].alias, None) self.assertEqual(locals[1].type, Types.Int32) self.assertEqual(locals[2].name, "result") self.assertEqual(locals[2].alias, None) self.assertEqual(locals[2].type, Types.Int32) self.assertEqual(len(m.instructions), 1) self.assertEqual("ret", m.instructions[0].name)
def test_parse_method_ret(self): s = ('.method public void main() {\n ' '.locals init (int32 first,\n' 'int32 second,\n' 'int32 result)\n' 'ret\n' ' }') vm = VM() p = ParserContext(s) mp = MethodParser() m = mp.parse(p) locals = m.locals self.assertEqual(len(locals), 3) self.assertEqual(locals[0].name, 'first') self.assertEqual(locals[0].alias, None) self.assertEqual(locals[0].type, Types.Int32) self.assertEqual(locals[1].name, 'second') self.assertEqual(locals[1].alias, None) self.assertEqual(locals[1].type, Types.Int32) self.assertEqual(locals[2].name, 'result') self.assertEqual(locals[2].alias, None) self.assertEqual(locals[2].type, Types.Int32) self.assertEqual(len(m.instructions), 1) self.assertEqual('ret', m.instructions[0].name)
def test_execute_method_add(self): s = ".method public int main() {\n " ".maxstack 10\n" "ldc.i4.1\n" "ldc.i4.5\n" "add\n" "ret\n" "}" vm = VM() p = ParserContext(s) mp = MethodParser() m = mp.parse(p) vm.execute_method(m.get_method()) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 6)
def test_execute_method_add(self): s = ('.method public int main() {\n ' '.maxstack 10\n' 'ldc.i4.1\n' 'ldc.i4.5\n' 'add\n' 'ret\n' '}') vm = VM() p = ParserContext(s) mp = MethodParser() m = mp.parse(p) vm.execute_method(m.get_method()) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 6)