Пример #1
0
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
Пример #2
0
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()