示例#1
0
文件: Ret.py 项目: memsom/PyCIL
    def test_execute_void_no_parameters(self):
        from VM import VM
        vm = VM()
        m = Method()
        m.name = 'TestMethod'
        m.returnType = Types.Void
        m.parameters = []
        vm.methods.append(m)

        self.assertEqual(vm.current_method(), None)

        vm.execute_method(m)
        self.assertEqual(vm.current_method(), m)

        r = Ret()
        r.execute(vm)
        self.assertEqual(vm.current_method(), None)
示例#2
0
文件: Ret.py 项目: martydill/PyCIL
    def test_execute_void_no_parameters(self):
        from VM import VM
        vm = VM()
        m = Method()
        m.name = 'TestMethod'
        m.returnType = Types.Void
        m.parameters = []
        vm.methods.append(m)

        self.assertEqual(vm.current_method(), None)
        
        vm.execute_method(m)
        self.assertEqual(vm.current_method(), m)
        
        r = Ret()
        r.execute(vm)
        self.assertEqual(vm.current_method(), None)
示例#3
0
文件: Ret.py 项目: memsom/PyCIL
    def test_execute_instance_clears_stack_with_void_return_type(self):
        from VM import VM
        vm = VM()
        m = Method()
        m.name = 'TestMethod'
        m.attributes.append(MethodDefinition.AttributeTypes['instance'])
        m.returnType = Types.Void
        m.maxStack = 99
        m.parameters = []
        vm.methods.append(m)
        vm.stack.push(111)
        vm.execute_method(m)
        vm.stack.push(124)
        vm.stack.push(987)

        r = Ret()
        r.execute(vm)
        self.assertEqual(vm.current_method(), None)
        self.assertEqual(vm.stack.count(), 1)
        self.assertEqual(vm.stack.pop(), 111)
示例#4
0
文件: Ret.py 项目: martydill/PyCIL
 def test_execute_instance_clears_stack_with_void_return_type(self):
     from VM import VM
     vm = VM()
     m = Method()
     m.name = 'TestMethod'
     m.attributes.append(MethodDefinition.AttributeTypes['instance'])
     m.returnType = Types.Void
     m.maxStack = 99
     m.parameters = []
     vm.methods.append(m)
     vm.stack.push(111)
     vm.execute_method(m)
     vm.stack.push(124)
     vm.stack.push(987)
     
     r = Ret()
     r.execute(vm)
     self.assertEqual(vm.current_method(), None)
     self.assertEqual(vm.stack.count(), 1)
     self.assertEqual(vm.stack.pop(), 111)
示例#5
0
文件: Ret.py 项目: memsom/PyCIL
    def test_execute_int_no_parameters_returns_value_on_stack(self):
        from VM import VM
        vm = VM()
        m = Method()
        m.name = 'TestMethod'
        m.returnType = Types.Int32
        m.parameters = []
        vm.methods.append(m)

        v = Variable(888)
        self.assertEqual(vm.current_method(), None)
        self.assertEqual(vm.stack.get_frame_count(), 0)
        vm.execute_method(m)
        vm.stack.push(v)
        self.assertEqual(vm.current_method(), m)
        # fixme - test return value too
        r = Ret()
        r.execute(vm)
        self.assertEqual(vm.current_method(), None)
        self.assertEqual(vm.stack.get_frame_count(), 1)
        self.assertEqual(vm.stack.pop(), v)
示例#6
0
文件: Ret.py 项目: martydill/PyCIL
    def test_execute_int_no_parameters_returns_value_on_stack(self):
        from VM import VM
        vm = VM()
        m = Method()
        m.name = 'TestMethod'
        m.returnType = Types.Int32
        m.parameters = []
        vm.methods.append(m)

        v = Variable(888)
        self.assertEqual(vm.current_method(), None)
        self.assertEqual(vm.stack.get_frame_count(), 0)
        vm.execute_method(m)
        vm.stack.push(v)
        self.assertEqual(vm.current_method(), m)
        # fixme - test return value too
        r = Ret()
        r.execute(vm)
        self.assertEqual(vm.current_method(), None)
        self.assertEqual(vm.stack.get_frame_count(), 1)
        self.assertEqual(vm.stack.pop(), v)