Changeset 391 for python/trunk/Lib/test/test_StringIO.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_StringIO.py
r2 r391 5 5 import cStringIO 6 6 import types 7 import array 8 import sys 7 9 from test import test_support 8 10 … … 19 21 20 22 def setUp(self): 21 self._line = self.constructor(self._line)22 23 self._lines = self.constructor((self._line + '\n') * 5) 23 24 self._fp = self.MODULE.StringIO(self._lines) … … 27 28 self.assertRaises(TypeError, self._fp.seek) 28 29 eq(self._fp.read(10), self._line[:10]) 30 eq(self._fp.read(0), '') 31 eq(self._fp.readline(0), '') 29 32 eq(self._fp.readline(), self._line[10:] + '\n') 30 33 eq(len(self._fp.readlines(60)), 2) … … 88 91 def test_iterator(self): 89 92 eq = self.assertEqual 90 unless = self. failUnless93 unless = self.assertTrue 91 94 eq(iter(self._fp), self._fp) 92 95 # Does this object support the iteration protocol? … … 101 104 self.assertRaises(ValueError, self._fp.next) 102 105 106 def test_getvalue(self): 107 self._fp.close() 108 self.assertRaises(ValueError, self._fp.getvalue) 109 110 @test_support.bigmemtest(test_support._2G + 2**26, memuse=2.001) 111 def test_reads_from_large_stream(self, size): 112 linesize = 2**26 # 64 MiB 113 lines = ['x' * (linesize - 1) + '\n'] * (size // linesize) + \ 114 ['y' * (size % linesize)] 115 f = self.MODULE.StringIO(''.join(lines)) 116 for i, expected in enumerate(lines): 117 line = f.read(len(expected)) 118 self.assertEqual(len(line), len(expected)) 119 self.assertEqual(line, expected) 120 self.assertEqual(f.read(), '') 121 f.seek(0) 122 for i, expected in enumerate(lines): 123 line = f.readline() 124 self.assertEqual(len(line), len(expected)) 125 self.assertEqual(line, expected) 126 self.assertEqual(f.readline(), '') 127 f.seek(0) 128 self.assertEqual(f.readlines(), lines) 129 self.assertEqual(f.readlines(), []) 130 f.seek(0) 131 self.assertEqual(f.readlines(size), lines) 132 self.assertEqual(f.readlines(), []) 133 134 # In worst case cStringIO requires 2 + 1 + 1/2 + 1/2**2 + ... = 4 135 # bytes per input character. 136 @test_support.bigmemtest(test_support._2G, memuse=4) 137 def test_writes_to_large_stream(self, size): 138 s = 'x' * 2**26 # 64 MiB 139 f = self.MODULE.StringIO() 140 n = size 141 while n > len(s): 142 f.write(s) 143 n -= len(s) 144 s = None 145 f.write('x' * n) 146 self.assertEqual(len(f.getvalue()), size) 147 148 103 149 class TestStringIO(TestGenericStringIO): 104 150 MODULE = StringIO … … 124 170 MODULE = cStringIO 125 171 172 def test_array_support(self): 173 # Issue #1730114: cStringIO should accept array objects 174 a = array.array('B', [0,1,2]) 175 f = self.MODULE.StringIO(a) 176 self.assertEqual(f.getvalue(), '\x00\x01\x02') 177 178 def test_unicode(self): 179 180 if not test_support.have_unicode: return 181 182 # The cStringIO module converts Unicode strings to character 183 # strings when writing them to cStringIO objects. 184 # Check that this works. 185 186 f = self.MODULE.StringIO() 187 f.write(u'abcde') 188 s = f.getvalue() 189 self.assertEqual(s, 'abcde') 190 self.assertEqual(type(s), str) 191 192 f = self.MODULE.StringIO(u'abcde') 193 s = f.getvalue() 194 self.assertEqual(s, 'abcde') 195 self.assertEqual(type(s), str) 196 197 self.assertRaises(UnicodeEncodeError, self.MODULE.StringIO, u'\xf4') 198 199 126 200 import sys 127 201 if sys.platform.startswith('java'): … … 136 210 constructor = buffer 137 211 212 class TestMemoryviewcStringIO(TestcStringIO): 213 constructor = memoryview 214 138 215 139 216 def test_main(): 140 test_support.run_unittest( 141 TestStringIO, 142 TestcStringIO, 143 TestBufferStringIO, 144 TestBuffercStringIO 145 ) 217 test_support.run_unittest(TestStringIO, TestcStringIO) 218 with test_support.check_py3k_warnings(("buffer.. not supported", 219 DeprecationWarning)): 220 test_support.run_unittest(TestBufferStringIO, TestBuffercStringIO) 221 test_support.run_unittest(TestMemoryviewcStringIO) 146 222 147 223 if __name__ == '__main__':
Note:
See TracChangeset
for help on using the changeset viewer.