| # Tests StringIO and 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() |