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))
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))
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]