def test_getitem(self, space, api): w_t = space.wrap((1, 2, 3, 4, 5)) assert space.unwrap(api.PyObject_GetItem(w_t, space.wrap(3))) == 4 w_d = space.newdict() space.setitem(w_d, space.wrap("a key!"), space.wrap(72)) assert space.unwrap(api.PyObject_GetItem(w_d, space.wrap("a key!"))) == 72 assert api.PyObject_SetItem(w_d, space.wrap("key"), space.w_None) == 0 assert space.getitem(w_d, space.wrap("key")) is space.w_None assert api.PyObject_DelItem(w_d, space.wrap("key")) == 0 with raises_w(space, KeyError): PyObject_GetItem(space, w_d, space.wrap("key"))
def test_run_string(self, space): def run(code, start, w_globals, w_locals): buf = rffi.str2charp(code) try: return PyRun_String(space, buf, start, w_globals, w_locals) finally: rffi.free_charp(buf) w_globals = space.newdict() assert 42 * 43 == space.unwrap( run("42 * 43", Py_eval_input, w_globals, w_globals)) assert PyObject_Size(space, w_globals) == 0 assert run("a = 42 * 43", Py_single_input, w_globals, w_globals) == space.w_None assert 42 * 43 == space.unwrap( PyObject_GetItem(space, w_globals, space.wrap("a")))
def test_run_string(self, space): def run(code, start, w_globals, w_locals): buf = rffi.str2charp(code) try: return PyRun_String(space, buf, start, w_globals, w_locals) finally: rffi.free_charp(buf) w_globals = space.newdict() assert 42 * 43 == space.unwrap( run("42 * 43", Py_eval_input, w_globals, w_globals)) # __builtins__ is added assert PyObject_Size(space, w_globals) == 1 assert run("a = 42 * 43", Py_single_input, w_globals, w_globals) == space.w_None py_obj = PyObject_GetItem(space, w_globals, space.wrap("a")) assert 42 * 43 == space.unwrap(get_w_obj_and_decref(space, py_obj))