Beispiel #1
0
 def test_call(self):
     def c(space, w_x, w_y, hello_w):
         u = space.unwrap
         w = space.wrap
         assert len(hello_w) == 2
         assert u(hello_w[0]) == 0
         assert u(hello_w[1]) == True
         return w((u(w_x) - u(w_y) + len(hello_w)))
     code = gateway.BuiltinCode(c, unwrap_spec=[gateway.ObjSpace,
                                                gateway.W_Root,
                                                gateway.W_Root,
                                                'args_w'])
     w = self.space.wrap
     args = argument.Arguments(self.space, [w(123), w(23), w(0), w(True)])
     w_result = code.funcrun(FakeFunc(self.space, "c"), args)
     assert self.space.eq_w(w_result, w(102))
Beispiel #2
0
 def test_call_args(self):
     def c(space, w_x, w_y, __args__):
         args_w, kwds_w = __args__.unpack()
         u = space.unwrap
         w = space.wrap
         return w((u(w_x) - u(w_y) + len(args_w))
                  * u(kwds_w['boo']))
     code = gateway.BuiltinCode(c, unwrap_spec=[gateway.ObjSpace,
                                                gateway.W_Root,
                                                gateway.W_Root,
                                                gateway.Arguments])
     w = self.space.wrap
     args = argument.Arguments(self.space, [w(123), w(23)], [], [],
                               w_stararg = w((0, True)),
                               w_starstararg = w({'boo': 10}))
     w_result = code.funcrun(FakeFunc(self.space, "c"), args)
     assert self.space.eq_w(w_result, w(1020))
Beispiel #3
0
    def test_interp2app_unwrap_spec_auto(self):
        def f(space, w_a, w_b):
            pass

        unwrap_spec = gateway.BuiltinCode(f)._unwrap_spec
        assert unwrap_spec == [ObjSpace, W_Root, W_Root]