@@ -2506,6 +2506,28 @@ def test_interleaved_read_write(self):
2506
2506
f .flush ()
2507
2507
self .assertEqual (raw .getvalue (), b'a2c' )
2508
2508
2509
+ def test_read1_after_write (self ):
2510
+ with self .BytesIO (b'abcdef' ) as raw :
2511
+ with self .tp (raw , 3 ) as f :
2512
+ f .write (b"1" )
2513
+ self .assertEqual (f .read1 (1 ), b'b' )
2514
+ f .flush ()
2515
+ self .assertEqual (raw .getvalue (), b'1bcdef' )
2516
+ with self .BytesIO (b'abcdef' ) as raw :
2517
+ with self .tp (raw , 3 ) as f :
2518
+ f .write (b"1" )
2519
+ self .assertEqual (f .read1 (), b'bcd' )
2520
+ f .flush ()
2521
+ self .assertEqual (raw .getvalue (), b'1bcdef' )
2522
+ with self .BytesIO (b'abcdef' ) as raw :
2523
+ with self .tp (raw , 3 ) as f :
2524
+ f .write (b"1" )
2525
+ # XXX: read(100) returns different numbers of bytes
2526
+ # in Python and C implementations.
2527
+ self .assertEqual (f .read1 (100 )[:3 ], b'bcd' )
2528
+ f .flush ()
2529
+ self .assertEqual (raw .getvalue (), b'1bcdef' )
2530
+
2509
2531
def test_interleaved_readline_write (self ):
2510
2532
with self .BytesIO (b'ab\n cdef\n g\n ' ) as raw :
2511
2533
with self .tp (raw ) as f :
@@ -2518,6 +2540,36 @@ def test_interleaved_readline_write(self):
2518
2540
f .flush ()
2519
2541
self .assertEqual (raw .getvalue (), b'1b\n 2def\n 3\n ' )
2520
2542
2543
+ def test_xxx (self ):
2544
+ with self .BytesIO (b'abcdefgh' ) as raw :
2545
+ with self .tp (raw ) as f :
2546
+ f .write (b'123' )
2547
+ self .assertEqual (f .read (), b'defgh' )
2548
+ f .write (b'456' )
2549
+ f .flush ()
2550
+ self .assertEqual (raw .getvalue (), b'123defgh456' )
2551
+ with self .BytesIO (b'abcdefgh' ) as raw :
2552
+ with self .tp (raw ) as f :
2553
+ f .write (b'123' )
2554
+ self .assertEqual (f .read (3 ), b'def' )
2555
+ f .write (b'456' )
2556
+ f .flush ()
2557
+ self .assertEqual (raw .getvalue (), b'123def456' )
2558
+ with self .BytesIO (b'abcdefgh' ) as raw :
2559
+ with self .tp (raw ) as f :
2560
+ f .write (b'123' )
2561
+ self .assertEqual (f .read1 (), b'defgh' )
2562
+ f .write (b'456' )
2563
+ f .flush ()
2564
+ self .assertEqual (raw .getvalue (), b'123defgh456' )
2565
+ with self .BytesIO (b'abcdefgh' ) as raw :
2566
+ with self .tp (raw ) as f :
2567
+ f .write (b'123' )
2568
+ self .assertEqual (f .read1 (3 ), b'def' )
2569
+ f .write (b'456' )
2570
+ f .flush ()
2571
+ self .assertEqual (raw .getvalue (), b'123def456' )
2572
+
2521
2573
# You can't construct a BufferedRandom over a non-seekable stream.
2522
2574
test_unseekable = None
2523
2575
0 commit comments