def test_getslice(self): buf = RBuffer(10) buf.setitem(0, '\x01') buf.setitem(1, '\x02') buf.setitem(2, '\x03') assert buf.getslice(0, 3) == '\x01\x02\x03' buf.free()
def __init__(self, space, w_arg): if space.is_true(space.isinstance(w_arg, space.w_unicode)): arg = space.unicode_w(w_arg) size = len(arg) * rffi.sizeof(lltype.UniChar) self._buffer = RBuffer(size) # XXX memory copy interface, redesign and share UNICODE_ARRAY_P = rffi.CArrayPtr(lltype.UniChar) ll_buffer = rffi.cast(UNICODE_ARRAY_P, self._buffer.ll_buffer) for i in range(len(arg)): ll_buffer[i] = arg[i] else: size = space.int_w(space.len(w_arg)) self._buffer = RBuffer(size) for i in range(size): self._buffer.setitem( i, rffi.cast(lltype.Char, space.int_w(space.getitem(w_arg, space.wrap(i))))) self.size = size
def test_creation(self): buf = RBuffer(3) assert buf.address() buf.free()
def test_fromaddress(self): buf = RBuffer(10) buf.setitem(2, '\x03') buf2 = RBuffer(7, buf.address() + 2) assert buf2.getitem(0) == '\x03' buf.free()
def test_getsetitem(self): buf = RBuffer(10) assert buf.getitem(3) == '\x00' buf.setitem(4, '\x01') assert buf.getitem(4) == '\x01' buf.free()