Example #1
0
    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, [])
Example #2
0
 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
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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, [])
Example #6
0
def _open(fd):
    base = streamio.DiskFile(fd)
    return streamio.BufferingInputStream(base)