def test_write(self): import sys base = TReaderWriter() filter = streamio.BufferingInputStream( streamio.BufferingOutputStream(base, 4), 4) def f(): filter.write("123456789") for chunk in base.chunks: assert len(chunk[1]) >= 4 s = filter.read(sys.maxint) assert base.buf == "123456789" base.chunks = [] filter.write("abc") assert not base.chunks s = filter.read(sys.maxint) assert base.buf == "123456789abc" base.chunks = [] filter.write("012") assert not base.chunks filter.seek(4, 0) assert base.buf == "123456789abc012" assert filter.read(3) == "567" filter.write('x') filter.flush() assert base.buf == "1234567x9abc012" self.interpret(f, [])
def f(): for readto, seekto, whence in cases: base = TSource(self.packets, seek=False) file = streamio.BufferingInputStream(base) head = file.read(readto) assert head == all[:readto] if whence == 1: offset = seekto - readto elif whence == 2: offset = seekto - end else: offset = seekto if whence == 2 and seekto < file.tell( ) or seekto < file.tell() - file.pos: try: file.seek(offset, whence) except streamio.MyNotImplementedError: assert whence in (0, 1) except streamio.StreamError: assert whence == 2 else: assert False else: file.seek(offset, whence) rest = file.readall() assert rest == all[seekto:] return True
def diskopen(fn, mode): filemode = 0 if "r" in mode: filemode = os.O_RDONLY if "w" in mode: filemode |= os.O_WRONLY fd = os.open(fn, filemode) base = streamio.DiskFile(fd) return streamio.BufferingInputStream(base)
def makeStream(self, tell=False, seek=False, bufsize=-1): base = TSource(self.packets) self.source = base def f(*args): raise NotImplementedError if not tell: base.tell = f if not seek: base.seek = f return streamio.BufferingInputStream(base, bufsize)
def test_write_seek_beyond_end(self): "Linux behaviour. May be different on other platforms." base = TReaderWriter() filter = streamio.BufferingInputStream( streamio.BufferingOutputStream(base, 4), 4) def f(): filter.seek(3, 0) filter.write("y"*2) filter.close() assert base.buf == "\0"*3 + "y"*2 self.interpret(f, [])
def _open(fd): base = streamio.DiskFile(fd) return streamio.BufferingInputStream(base)