def test_read(): f = RStringIO() assert f.read() == '' f.write('0123') f.write('456') assert f.read() == '' assert f.read(5) == '' assert f.tell() == 7 f.seek(1) assert f.read() == '123456' assert f.tell() == 7 f.seek(1) assert f.read(12) == '123456' assert f.tell() == 7 f.seek(1) assert f.read(2) == '12' assert f.read(1) == '3' assert f.tell() == 4 f.seek(0) assert f.read() == '0123456' assert f.tell() == 7 f.seek(0) assert f.read(7) == '0123456' assert f.tell() == 7 f.seek(15) assert f.read(2) == '' assert f.tell() == 15
def test_stress(): import cStringIO, random f = RStringIO() expected = cStringIO.StringIO() for i in range(2000): r = random.random() if r < 0.15: p = random.randrange(-5000, 10000) if r < 0.05: mode = 0 elif r < 0.1: mode = 1 else: mode = 2 print 'seek', p, mode f.seek(p, mode) expected.seek(p, mode) elif r < 0.6: buf = str(random.random()) print 'write %d bytes' % len(buf) f.write(buf) expected.write(buf) elif r < 0.92: n = random.randrange(0, 100) print 'read %d bytes' % n data1 = f.read(n) data2 = expected.read(n) assert data1 == data2 elif r < 0.97: print 'check tell()' assert f.tell() == expected.tell() else: print 'check getvalue()' assert f.getvalue() == expected.getvalue() assert f.getvalue() == expected.getvalue() assert f.tell() == expected.tell()