示例#1
0
文件: ldloc.py 项目: memsom/PyCIL
 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)
示例#2
0
文件: ldarg.py 项目: martydill/PyCIL
 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)
示例#3
0
 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)
示例#4
0
文件: stloc.py 项目: martydill/PyCIL
 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)
示例#5
0
文件: ldloc.py 项目: martydill/PyCIL
    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)
示例#6
0
    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)
示例#7
0
文件: ldloc.py 项目: memsom/PyCIL
 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)
示例#8
0
文件: ldloc.py 项目: martydill/PyCIL
    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)
示例#9
0
文件: stloc.py 项目: martydill/PyCIL
 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')
示例#10
0
    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')
示例#11
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)
示例#12
0
文件: stloc.py 项目: martydill/PyCIL
 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)
示例#13
0
文件: br.py 项目: martydill/PyCIL
    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);
示例#14
0
文件: leave.py 项目: martydill/PyCIL
    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);
示例#15
0
    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)
示例#16
0
文件: leave.py 项目: memsom/PyCIL
    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)
示例#17
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)
示例#18
0
文件: brtrue.py 项目: martydill/PyCIL
    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)