def test_write_many(): f = RStringIO() for j in range(10): for i in range(253): f.write(chr(i)) expected = ''.join([chr(i) for j in range(10) for i in range(253)]) assert f.getvalue() == expected
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_bug(): f = RStringIO() f.write('0') f.write('1') f.write('2') assert f.getvalue() == '012' f.write('3') assert f.getvalue() == '0123'
def test_tell(): f = RStringIO() f.write('0123') f.write('456') assert f.tell() == 7 f.seek(2) for i in range(3, 20): f.write('X') assert f.tell() == i assert f.getvalue() == '01XXXXXXXXXXXXXXXXX'
def test_seek(): f = RStringIO() f.write('0123') f.write('456') f.write('789') f.seek(4) f.write('AB') assert f.getvalue() == '0123AB6789' f.seek(-2, 2) f.write('CDE') assert f.getvalue() == '0123AB67CDE' f.seek(2, 0) f.seek(5, 1) f.write('F') assert f.getvalue() == '0123AB6FCDE'
def test_truncate(): f = RStringIO() f.truncate(20) assert f.getvalue() == '' assert f.tell() == 0 f.write('\x00' * 20) f.write('hello') f.write(' world') f.truncate(30) assert f.getvalue() == '\x00' * 20 + 'hello worl' f.truncate(25) assert f.getvalue() == '\x00' * 20 + 'hello' f.write('baz') f.write('egg') f.truncate(3) assert f.getvalue() == '\x00' * 3 assert f.tell() == 3
def __init__(self, source=None, relax=False, book=False): self.d = 0 self.decode_cipher = \ r'''+b(29e*j1VMEKLyC})8&m#~W>qxdRp0wkrUo[D7,XTcA"lI''' + \ r'''.v%{gJh4G\-=O@5`_3i<?Z';FNQuY]szf$!BS/|t:Pn6^Ha''' self.encode_cipher = [ord(c) for c in \ r'''5z]&gqtyfr$(we4{WP)H-Zn,'''+'['+r'''%\3dL+Q;>U!pJS72FhOA1C''' + \ r'''B6v^=I_0/8|jsb9m<.TVac`uY*MK'X~xDl}REokN:#?G"i@''' ] self.cipher_length = len(self.decode_cipher) self.WORD_SIZE = 10 self.REG_MAX = self.tri2dec([2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) self.MEM_SIZE = self.REG_MAX + 1 self.instructions = ['j', 'i', '*', 'p', '<', '/', 'v', 'o'] self.real_io_operations = book self.output = RStringIO() if source: self.load(source, relax) self.run() print self.output.getvalue()
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()
def test_write_beyond_end(): f = RStringIO() f.seek(20, 1) assert f.tell() == 20 f.write('X') assert f.getvalue() == '\x00' * 20 + 'X'
def test_simple(): f = RStringIO() f.write('hello') f.write(' world') assert f.getvalue() == 'hello world'