@@ -417,6 +417,35 @@ def test_anonymous(self):
417417 m [x ] = b
418418 self .assertEqual (m [x ], b )
419419
420+ def test_read_all (self ):
421+ m = mmap .mmap (- 1 , 16 )
422+ self .addCleanup (m .close )
423+
424+ # With no parameters, or None or a negative argument, reads all
425+ m .write (bytes (range (16 )))
426+ m .seek (0 )
427+ self .assertEqual (m .read (), bytes (range (16 )))
428+ m .seek (8 )
429+ self .assertEqual (m .read (), bytes (range (8 , 16 )))
430+ m .seek (16 )
431+ self .assertEqual (m .read (), b'' )
432+ m .seek (3 )
433+ self .assertEqual (m .read (None ), bytes (range (3 , 16 )))
434+ m .seek (4 )
435+ self .assertEqual (m .read (- 1 ), bytes (range (4 , 16 )))
436+ m .seek (5 )
437+ self .assertEqual (m .read (- 2 ), bytes (range (5 , 16 )))
438+ m .seek (9 )
439+ self .assertEqual (m .read (- 42 ), bytes (range (9 , 16 )))
440+
441+ def test_read_invalid_arg (self ):
442+ m = mmap .mmap (- 1 , 16 )
443+ self .addCleanup (m .close )
444+
445+ self .assertRaises (TypeError , m .read , 'foo' )
446+ self .assertRaises (TypeError , m .read , 5.5 )
447+ self .assertRaises (TypeError , m .read , [1 , 2 , 3 ])
448+
420449 def test_extended_getslice (self ):
421450 # Test extended slicing by comparing with list slicing.
422451 s = bytes (reversed (range (256 )))
0 commit comments