diff options
author | Barry Warsaw <barry@python.org> | 2001-09-22 04:33:47 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2001-09-22 04:33:47 (GMT) |
commit | 7f8ff471f8020ab4c365c4e1885290cbfc08f718 (patch) | |
tree | 31b4cfd539d27605179e6e37a0121e3a1c1fe9bf /Lib/test/test_StringIO.py | |
parent | 3208d4b387641edb99c16126b7062e701114d655 (diff) | |
download | cpython-7f8ff471f8020ab4c365c4e1885290cbfc08f718.zip cpython-7f8ff471f8020ab4c365c4e1885290cbfc08f718.tar.gz cpython-7f8ff471f8020ab4c365c4e1885290cbfc08f718.tar.bz2 |
Converted test_StringIO.py to use unittest, so
Lib/test/output/test_StringIO is no longer necessary.
Also, added a test of the iterator protocol that's just been added to
StringIO's and cStringIO's.
Diffstat (limited to 'Lib/test/test_StringIO.py')
-rw-r--r-- | Lib/test/test_StringIO.py | 112 |
1 files changed, 71 insertions, 41 deletions
diff --git a/Lib/test/test_StringIO.py b/Lib/test/test_StringIO.py index 8d3c851..eddeb10 100644 --- a/Lib/test/test_StringIO.py +++ b/Lib/test/test_StringIO.py @@ -1,43 +1,73 @@ # Tests StringIO and cStringIO -def do_test(module): - s = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"+'\n')*5 - f = module.StringIO(s) - print f.read(10) - print f.readline() - print len(f.readlines(60)) - - f = module.StringIO() - f.write('abcdef') - f.seek(3) - f.write('uvwxyz') - f.write('!') - print `f.getvalue()` - f.close() - - f = module.StringIO() - f.writelines(["a", "b", "c"]) - f.seek(0) - print `f.getvalue()` - f.close() - - f = module.StringIO() - f.write(s) - f.seek(10) - f.truncate() - print `f.getvalue()` - f.seek(0) - f.truncate(5) - print `f.getvalue()` - f.close() - 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." - -import StringIO, cStringIO -do_test(StringIO) -do_test(cStringIO) +import unittest +import StringIO +import cStringIO +import types +import test_support + + +class TestGenericStringIO(unittest.TestCase): + # use a class variable MODULE to define which module is being tested + + def setUp(self): + self._line = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + self._lines = (self._line + '\n') * 5 + self._fp = self.MODULE.StringIO(self._lines) + + def test_reads(self): + eq = self.assertEqual + eq(self._fp.read(10), 'abcdefghij') + eq(self._fp.readline(), 'klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\n') + eq(len(self._fp.readlines(60)), 2) + + def test_writes(self): + f = self.MODULE.StringIO() + f.write('abcdef') + f.seek(3) + f.write('uvwxyz') + f.write('!') + self.assertEqual(f.getvalue(), 'abcuvwxyz!') + + def test_writelines(self): + f = self.MODULE.StringIO() + f.writelines(['a', 'b', 'c']) + f.seek(0) + self.assertEqual(f.getvalue(), 'abc') + + def test_truncate(self): + eq = self.assertEqual + f = self.MODULE.StringIO() + f.write(self._lines) + f.seek(10) + f.truncate() + eq(f.getvalue(), 'abcdefghij') + f.seek(0) + f.truncate(5) + eq(f.getvalue(), 'abcde') + f.close() + self.assertRaises(ValueError, f.write, 'frobnitz') + + def test_iterator(self): + eq = self.assertEqual + it = iter(self._fp) + self.failUnless(isinstance(it, types.FunctionIterType)) + i = 0 + for line in self._fp: + eq(line, self._line + '\n') + i += 1 + eq(i, 5) + +class TestStringIO(TestGenericStringIO): + MODULE = StringIO + +class TestcStringIO(TestGenericStringIO): + MODULE = cStringIO + + +def test_main(): + test_support.run_unittest(TestStringIO) + test_support.run_unittest(TestcStringIO) + +if __name__ == '__main__': + test_main() |