示例#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, [])
示例#2
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)
示例#3
0
    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)
示例#4
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, [])
示例#5
0
 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