예제 #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 f():
     base = TWriter()
     filter = streamio.BufferingOutputStream(base, 4)
     filter.seek(3, 0)
     filter.write("y" * 2)
     filter.close()
     assert base.buf == "\0" * 3 + "y" * 2
예제 #3
0
 def f():
     base = TWriter()
     filter = streamio.BufferingOutputStream(base, 4)
     filter.write('12345678')
     filter.truncate(4)
     filter.write('y')
     filter.close()
     assert base.buf == '1234' + '\0' * 4 + 'y'
예제 #4
0
 def test_write_seek(self):
     base = TWriter()
     filter = streamio.BufferingOutputStream(base, 4)
     def f():
         filter.write("x"*6)
         filter.seek(3, 0)
         filter.write("y"*2)
         filter.close()
         assert base.buf == "x"*3 + "y"*2 + "x"*1
     self.interpret(f, [])
예제 #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, [])
예제 #6
0
 def f():
     base = TWriter()
     filter = streamio.BufferingOutputStream(base, 4)
     filter.write("123")
     assert not base.chunks
     assert filter.tell() == 3
     filter.write("456")
     filter.write("789ABCDEF")
     filter.write("0123")
     assert filter.tell() == 19
     filter.close()
     assert base.buf == "123456789ABCDEF0123"
     for chunk in base.chunks[:-1]:
         assert len(chunk[1]) >= 4