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 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 diskopen(fn, mode): filemode = 0 import mmap 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 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 f(): for readto, seekto, whence in cases: base = TSource(self.packets) file = streamio.BufferingInputStream(base) head = file.read(readto) assert head == all[:readto] offset = 42 # for the flow space if whence == 1: offset = seekto - readto elif whence == 2: offset = seekto - end file.seek(offset, whence) rest = file.readall() assert rest == all[seekto:] return True