def test_execute_0(self): from VM import VM vm = VM() x = ldloc('0') m = MethodDefinition() m.locals.append(Variable(987)) vm.set_current_method(m) x.execute(vm) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 987)
def test_execute_0(self): from VM import VM vm = VM() x = ldarg('0') m = MethodDefinition() m.parameters.append(Variable(987)) vm.set_current_method(m) x.execute(vm) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 987)
def test_execute_1(self): from VM import VM vm = VM() x = ldarg('1') m = MethodDefinition() m.parameters.append(Variable(0)) m.parameters.append(Variable(987)) vm.set_current_method(m) x.execute(vm) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 987)
def test_execute_0(self): from VM import VM vm = VM() x = stloc('0') m = MethodDefinition() m.locals.append(Variable(0)) vm.set_current_method(m) vm.stack.push(Variable(987)) x.execute(vm) self.assertEqual(vm.stack.count(), 0) self.assertEqual(m.locals[0].value, 987)
def test_execute_1(self): from VM import VM vm = VM() x = ldloc("1") m = MethodDefinition() m.locals.append(Variable(0)) m.locals.append(Variable(987)) vm.set_current_method(m) x.execute(vm) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 987)
def test_execute_1(self): from VM import VM vm = VM() x = stloc('1') m = MethodDefinition() m.locals.append(Variable(0)) m.locals.append(Variable(0)) vm.set_current_method(m) vm.stack.push(Variable(987)) x.execute(vm) self.assertEqual(vm.stack.count(), 0) self.assertEqual(m.locals[0].value, 0) self.assertEqual(m.locals[1].value, 987)
def test_execute_s_label(self): from VM import VM vm = VM() x = ldloc('s ghi') m = MethodDefinition() m.locals.append(Variable(0, name='abc')) m.locals.append(Variable(0, name='def')) m.locals.append(Variable(987, name='ghi')) m.locals.append(Variable(0, name='jkl')) vm.set_current_method(m) x.execute(vm) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 987)
def test_execute_s_label(self): from VM import VM vm = VM() x = ldloc("s ghi") m = MethodDefinition() m.locals.append(Variable(0, name="abc")) m.locals.append(Variable(0, name="def")) m.locals.append(Variable(987, name="ghi")) m.locals.append(Variable(0, name="jkl")) vm.set_current_method(m) x.execute(vm) self.assertEqual(vm.stack.count(), 1) self.assertEqual(vm.stack.pop().value, 987)
def test_execute_reference_type_stores_reference_type_in_local_but_doesnt_change_name(self): from VM import VM vm = VM() x = stloc('0') m = MethodDefinition() localr = ReferenceType() localr.name = 'foobar' m.locals.append(localr) vm.set_current_method(m) r2 = ReferenceType() vm.stack.push(r2) x.execute(vm) self.assertEqual(vm.stack.count(), 0) self.assertEqual(m.locals[0], r2) self.assertEqual(m.locals[0].name, 'foobar')
def test_execute_reference_type_stores_reference_type_in_local_but_doesnt_change_name( self): from VM import VM vm = VM() x = stloc('0') m = MethodDefinition() localr = ReferenceType() localr.name = 'foobar' m.locals.append(localr) vm.set_current_method(m) r2 = ReferenceType() vm.stack.push(r2) x.execute(vm) self.assertEqual(vm.stack.count(), 0) self.assertEqual(m.locals[0], r2) self.assertEqual(m.locals[0].name, 'foobar')
def test_execute_s_label(self): from VM import VM vm = VM() x = stloc('s def') m = MethodDefinition() m.locals.append(Variable(0, name='xyz')) m.locals.append(Variable(0, name='abc')) m.locals.append(Variable(0, name='def')) m.locals.append(Variable(0, name='ghi')) vm.set_current_method(m) vm.stack.push(Variable(987)) x.execute(vm) self.assertEqual(vm.stack.count(), 0) self.assertEqual(m.locals[0].value, 0) self.assertEqual(m.locals[1].value, 0) self.assertEqual(m.locals[2].value, 987) self.assertEqual(m.locals[3].value, 0)
def test_execute_s_label(self): from VM import VM vm = VM() x = stloc('s def') m = MethodDefinition() m.locals.append(Variable(0, name='xyz')) m.locals.append(Variable(0, name='abc')) m.locals.append(Variable(0, name='def')) m.locals.append(Variable(0, name='ghi')) vm.set_current_method(m) vm.stack.push(Variable(987)) x.execute(vm) self.assertEqual(vm.stack.count(), 0) self.assertEqual(m.locals[0].value, 0) self.assertEqual(m.locals[1].value, 0) self.assertEqual(m.locals[2].value, 987) self.assertEqual(m.locals[3].value, 0)
def test_br(self): from VM import VM from MethodDefinition import MethodDefinition vm = VM() m = MethodDefinition() x = ldc('i4.1') m.instructions.append(x) m.instructions.append(x) m.instructions.append(x) dest = ldc('i4.3') dest.label = 'asdf' m.instructions.append(dest) vm.set_current_method(m) x = br('asdf') # fixme optional parameters x.execute(vm) index = vm.get_instruction_pointer() self.assertEqual(3, index);
def test_leave_s(self): from VM import VM from MethodDefinition import MethodDefinition vm = VM() m = MethodDefinition() x = ldc('i4.1') m.instructions.append(x) m.instructions.append(x) m.instructions.append(x) dest = ldc('i4.3') dest.label = 'zzz' m.instructions.append(dest) vm.set_current_method(m) x = leave('s zzz') x.execute(vm) index = vm.get_instruction_pointer() self.assertEqual(3, index);
def test_br_s(self): from VM import VM from MethodDefinition import MethodDefinition vm = VM() m = MethodDefinition() x = ldc('i4.1') m.instructions.append(x) m.instructions.append(x) m.instructions.append(x) dest = ldc('i4.3') dest.label = 'zzz' m.instructions.append(dest) vm.set_current_method(m) x = br('s zzz') x.execute(vm) index = vm.get_instruction_pointer() self.assertEqual(3, index)
def test_leave(self): from VM import VM from MethodDefinition import MethodDefinition vm = VM() m = MethodDefinition() x = ldc('i4.1') m.instructions.append(x) m.instructions.append(x) m.instructions.append(x) dest = ldc('i4.3') dest.label = 'asdf' m.instructions.append(dest) vm.set_current_method(m) x = leave('asdf') # fixme optional parameters x.execute(vm) index = vm.get_instruction_pointer() self.assertEqual(3, index)
def test_execute_true_s(self): from VM import VM from MethodDefinition import MethodDefinition vm = VM() m = MethodDefinition() x = ldc('i4.1') m.instructions.append(x) m.instructions.append(x) m.instructions.append(x) dest = ldc('i4.3') dest.label = 'asdf' m.instructions.append(dest) vm.set_current_method(m) vm.stack.push(Variable(1)) x = brtrue('s asdf') # fixme optional parameters x.execute(vm) index = vm.get_instruction_pointer() self.assertEqual(3, index) self.assertEqual(vm.stack.count(), 0)
def test_execute_true_s(self): from VM import VM from MethodDefinition import MethodDefinition vm = VM() m = MethodDefinition() x = ldc('i4.1') m.instructions.append(x) m.instructions.append(x) m.instructions.append(x) dest = ldc('i4.3') dest.label = 'asdf' m.instructions.append(dest) vm.set_current_method(m) vm.stack.push(Variable(1)) x = brtrue('s asdf') # fixme optional parameters x.execute(vm) index = vm.get_instruction_pointer() self.assertEqual(3, index); self.assertEqual(vm.stack.count(), 0)