| 216 | ) |
| 217 | |
| 218 | def test_mixed_readline_and_read(self): |
| 219 | lines = ["Humpty Dumpty sat on a wall,\n", |
| 220 | "Humpty Dumpty had a great fall.\r\n", |
| 221 | "All the king's horses and all the king's men\r", |
| 222 | "Couldn't put Humpty together again."] |
| 223 | data = ''.join(lines) |
| 224 | def getreader(): |
| 225 | stream = io.BytesIO(data.encode(self.encoding)) |
| 226 | return codecs.getreader(self.encoding)(stream) |
| 227 | |
| 228 | # Issue #8260: Test readline() followed by read() |
| 229 | f = getreader() |
| 230 | self.assertEqual(f.readline(), lines[0]) |
| 231 | self.assertEqual(f.read(), ''.join(lines[1:])) |
| 232 | self.assertEqual(f.read(), '') |
| 233 | |
| 234 | # Issue #32110: Test readline() followed by read(n) |
| 235 | f = getreader() |
| 236 | self.assertEqual(f.readline(), lines[0]) |
| 237 | self.assertEqual(f.read(1), lines[1][0]) |
| 238 | self.assertEqual(f.read(0), '') |
| 239 | self.assertEqual(f.read(100), data[len(lines[0]) + 1:][:100]) |
| 240 | |
| 241 | # Issue #16636: Test readline() followed by readlines() |
| 242 | f = getreader() |
| 243 | self.assertEqual(f.readline(), lines[0]) |
| 244 | self.assertEqual(f.readlines(), lines[1:]) |
| 245 | self.assertEqual(f.read(), '') |
| 246 | |
| 247 | # Test read(n) followed by read() |
| 248 | f = getreader() |
| 249 | self.assertEqual(f.read(size=40, chars=5), data[:5]) |
| 250 | self.assertEqual(f.read(), data[5:]) |
| 251 | self.assertEqual(f.read(), '') |
| 252 | |
| 253 | # Issue #32110: Test read(n) followed by read(n) |
| 254 | f = getreader() |
| 255 | self.assertEqual(f.read(size=40, chars=5), data[:5]) |
| 256 | self.assertEqual(f.read(1), data[5]) |
| 257 | self.assertEqual(f.read(0), '') |
| 258 | self.assertEqual(f.read(100), data[6:106]) |
| 259 | |
| 260 | # Issue #12446: Test read(n) followed by readlines() |
| 261 | f = getreader() |
| 262 | self.assertEqual(f.read(size=40, chars=5), data[:5]) |
| 263 | self.assertEqual(f.readlines(), [lines[0][5:]] + lines[1:]) |
| 264 | self.assertEqual(f.read(), '') |
| 265 | |
| 266 | def test_bug1175396(self): |
| 267 | s = [ |