From: Barry Warsaw Date: Sat, 22 Sep 2001 04:33:47 +0000 (+0000) Subject: Converted test_StringIO.py to use unittest, so X-Git-Tag: v2.2.1c1~1684 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f8ff471f8020ab4c365c4e1885290cbfc08f718;p=python 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. --- diff --git a/Lib/test/output/test_StringIO b/Lib/test/output/test_StringIO deleted file mode 100644 index 992d5340d9..0000000000 --- a/Lib/test/output/test_StringIO +++ /dev/null @@ -1,21 +0,0 @@ -test_StringIO -abcdefghij -klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ - -2 -'abcuvwxyz!' -'abc' -'abcdefghij' -'abcde' -Caught expected ValueError writing to closed StringIO: -I/O operation on closed file -abcdefghij -klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ - -2 -'abcuvwxyz!' -'abc' -'abcdefghij' -'abcde' -Caught expected ValueError writing to closed StringIO: -I/O operation on closed file diff --git a/Lib/test/test_StringIO.py b/Lib/test/test_StringIO.py index 8d3c85142a..eddeb105be 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()