# Tests StringIO and cStringIO

import string

def do_test(module):
    s = (string.letters+'\n')*5
    f = module.StringIO(s)
    print f.read(10)
    print f.readline()
    print len(f.readlines(60))

    f = module.StringIO()
    f.write(s)
    f.seek(10)
    f.truncate()
    print `f.getvalue()`
    # This test fails for cStringIO; reported as SourceForge bug #115531;
    # please uncomment this test when that bug is fixed.
    # http://sourceforge.net/bugs/?func=detailbug&bug_id=115531&group_id=5470
##     f.seek(0)
##     f.truncate(5)
##     print `f.getvalue()`

    # This test fails for cStringIO; reported as SourceForge bug #115530;
    # please uncomment this test when that bug is fixed.
    # http://sourceforge.net/bugs/?func=detailbug&bug_id=115530&group_id=5470
##     try:
##         f.write("frobnitz")
##     except ValueError, e:
##         print "Caught expected ValueError writing to closed StringIO:"
##         print e
##     else:
##         print "Failed to catch ValueError writing to closed StringIO."

# Don't bother testing cStringIO without
import StringIO, cStringIO
do_test(StringIO)
do_test(cStringIO)