@@ -469,16 +469,74 @@ def test_surrogate_keyword(self):
469469 "'\udc80 ' is an invalid keyword argument for this function" ):
470470 getargs_keyword_only (1 , 2 , ** {'\uDC80 ' : 10 })
471471
472+
472473class Bytes_TestCase (unittest .TestCase ):
473474 def test_c (self ):
474475 from _testcapi import getargs_c
475476 self .assertRaises (TypeError , getargs_c , b'abc' ) # len > 1
476- self .assertEqual (getargs_c (b'a' ), b'a' )
477- self .assertEqual (getargs_c (bytearray (b'a' )), b'a' )
477+ self .assertEqual (getargs_c (b'a' ), 97 )
478+ self .assertEqual (getargs_c (bytearray (b'a' )), 97 )
478479 self .assertRaises (TypeError , getargs_c , memoryview (b'a' ))
479480 self .assertRaises (TypeError , getargs_c , 's' )
481+ self .assertRaises (TypeError , getargs_c , 97 )
480482 self .assertRaises (TypeError , getargs_c , None )
481483
484+ def test_y (self ):
485+ from _testcapi import getargs_y
486+ self .assertRaises (TypeError , getargs_y , 'abc\xe9 ' )
487+ self .assertEqual (getargs_y (b'bytes' ), b'bytes' )
488+ self .assertRaises (ValueError , getargs_y , b'nul:\0 ' )
489+ self .assertRaises (TypeError , getargs_y , bytearray (b'bytearray' ))
490+ self .assertRaises (TypeError , getargs_y , memoryview (b'memoryview' ))
491+ self .assertRaises (TypeError , getargs_y , None )
492+
493+ def test_y_star (self ):
494+ from _testcapi import getargs_y_star
495+ self .assertRaises (TypeError , getargs_y_star , 'abc\xe9 ' )
496+ self .assertEqual (getargs_y_star (b'bytes' ), b'bytes' )
497+ self .assertEqual (getargs_y_star (b'nul:\0 ' ), b'nul:\0 ' )
498+ self .assertEqual (getargs_y_star (bytearray (b'bytearray' )), b'bytearray' )
499+ self .assertEqual (getargs_y_star (memoryview (b'memoryview' )), b'memoryview' )
500+ self .assertRaises (TypeError , getargs_y_star , None )
501+
502+ def test_y_hash (self ):
503+ from _testcapi import getargs_y_hash
504+ self .assertRaises (TypeError , getargs_y_hash , 'abc\xe9 ' )
505+ self .assertEqual (getargs_y_hash (b'bytes' ), b'bytes' )
506+ self .assertEqual (getargs_y_hash (b'nul:\0 ' ), b'nul:\0 ' )
507+ self .assertRaises (TypeError , getargs_y_hash , bytearray (b'bytearray' ))
508+ self .assertRaises (TypeError , getargs_y_hash , memoryview (b'memoryview' ))
509+ self .assertRaises (TypeError , getargs_y_hash , None )
510+
511+ def test_w_star (self ):
512+ # getargs_w_star() modifies first and last byte
513+ from _testcapi import getargs_w_star
514+ self .assertRaises (TypeError , getargs_w_star , 'abc\xe9 ' )
515+ self .assertRaises (TypeError , getargs_w_star , b'bytes' )
516+ self .assertRaises (TypeError , getargs_w_star , b'nul:\0 ' )
517+ self .assertRaises (TypeError , getargs_w_star , memoryview (b'bytes' ))
518+ buf = bytearray (b'bytearray' )
519+ self .assertEqual (getargs_w_star (buf ), b'[ytearra]' )
520+ self .assertEqual (buf , bytearray (b'[ytearra]' ))
521+ buf = bytearray (b'memoryview' )
522+ self .assertEqual (getargs_w_star (memoryview (buf )), b'[emoryvie]' )
523+ self .assertEqual (buf , bytearray (b'[emoryvie]' ))
524+ self .assertRaises (TypeError , getargs_w_star , None )
525+
526+
527+ class String_TestCase (unittest .TestCase ):
528+ def test_C (self ):
529+ from _testcapi import getargs_C
530+ self .assertRaises (TypeError , getargs_C , 'abc' ) # len > 1
531+ self .assertEqual (getargs_C ('a' ), 97 )
532+ self .assertEqual (getargs_C ('\u20ac ' ), 0x20ac )
533+ self .assertEqual (getargs_C ('\U0001f40d ' ), 0x1f40d )
534+ self .assertRaises (TypeError , getargs_C , b'a' )
535+ self .assertRaises (TypeError , getargs_C , bytearray (b'a' ))
536+ self .assertRaises (TypeError , getargs_C , memoryview (b'a' ))
537+ self .assertRaises (TypeError , getargs_C , 97 )
538+ self .assertRaises (TypeError , getargs_C , None )
539+
482540 def test_s (self ):
483541 from _testcapi import getargs_s
484542 self .assertEqual (getargs_s ('abc\xe9 ' ), b'abc\xc3 \xa9 ' )
@@ -533,47 +591,82 @@ def test_z_hash(self):
533591 self .assertRaises (TypeError , getargs_z_hash , memoryview (b'memoryview' ))
534592 self .assertIsNone (getargs_z_hash (None ))
535593
536- def test_y (self ):
537- from _testcapi import getargs_y
538- self .assertRaises (TypeError , getargs_y , 'abc\xe9 ' )
539- self .assertEqual (getargs_y (b'bytes' ), b'bytes' )
540- self .assertRaises (ValueError , getargs_y , b'nul:\0 ' )
541- self .assertRaises (TypeError , getargs_y , bytearray (b'bytearray' ))
542- self .assertRaises (TypeError , getargs_y , memoryview (b'memoryview' ))
543- self .assertRaises (TypeError , getargs_y , None )
544-
545- def test_y_star (self ):
546- from _testcapi import getargs_y_star
547- self .assertRaises (TypeError , getargs_y_star , 'abc\xe9 ' )
548- self .assertEqual (getargs_y_star (b'bytes' ), b'bytes' )
549- self .assertEqual (getargs_y_star (b'nul:\0 ' ), b'nul:\0 ' )
550- self .assertEqual (getargs_y_star (bytearray (b'bytearray' )), b'bytearray' )
551- self .assertEqual (getargs_y_star (memoryview (b'memoryview' )), b'memoryview' )
552- self .assertRaises (TypeError , getargs_y_star , None )
553-
554- def test_y_hash (self ):
555- from _testcapi import getargs_y_hash
556- self .assertRaises (TypeError , getargs_y_hash , 'abc\xe9 ' )
557- self .assertEqual (getargs_y_hash (b'bytes' ), b'bytes' )
558- self .assertEqual (getargs_y_hash (b'nul:\0 ' ), b'nul:\0 ' )
559- self .assertRaises (TypeError , getargs_y_hash , bytearray (b'bytearray' ))
560- self .assertRaises (TypeError , getargs_y_hash , memoryview (b'memoryview' ))
561- self .assertRaises (TypeError , getargs_y_hash , None )
562-
563- def test_w_star (self ):
564- # getargs_w_star() modifies first and last byte
565- from _testcapi import getargs_w_star
566- self .assertRaises (TypeError , getargs_w_star , 'abc\xe9 ' )
567- self .assertRaises (TypeError , getargs_w_star , b'bytes' )
568- self .assertRaises (TypeError , getargs_w_star , b'nul:\0 ' )
569- self .assertRaises (TypeError , getargs_w_star , memoryview (b'bytes' ))
570- self .assertEqual (getargs_w_star (bytearray (b'bytearray' )), b'[ytearra]' )
571- self .assertEqual (getargs_w_star (memoryview (bytearray (b'memoryview' ))),
572- b'[emoryvie]' )
573- self .assertRaises (TypeError , getargs_w_star , None )
574-
594+ def test_es (self ):
595+ from _testcapi import getargs_es
596+ self .assertEqual (getargs_es ('abc\xe9 ' ), b'abc\xc3 \xa9 ' )
597+ self .assertEqual (getargs_es ('abc\xe9 ' , 'latin1' ), b'abc\xe9 ' )
598+ self .assertRaises (UnicodeEncodeError , getargs_es , 'abc\xe9 ' , 'ascii' )
599+ self .assertRaises (LookupError , getargs_es , 'abc\xe9 ' , 'spam' )
600+ self .assertRaises (TypeError , getargs_es , b'bytes' , 'latin1' )
601+ self .assertRaises (TypeError , getargs_es , bytearray (b'bytearray' ), 'latin1' )
602+ self .assertRaises (TypeError , getargs_es , memoryview (b'memoryview' ), 'latin1' )
603+ self .assertRaises (TypeError , getargs_es , None , 'latin1' )
604+ self .assertRaises (TypeError , getargs_es , 'nul:\0 ' , 'latin1' )
605+
606+ def test_et (self ):
607+ from _testcapi import getargs_et
608+ self .assertEqual (getargs_et ('abc\xe9 ' ), b'abc\xc3 \xa9 ' )
609+ self .assertEqual (getargs_et ('abc\xe9 ' , 'latin1' ), b'abc\xe9 ' )
610+ self .assertRaises (UnicodeEncodeError , getargs_et , 'abc\xe9 ' , 'ascii' )
611+ self .assertRaises (LookupError , getargs_et , 'abc\xe9 ' , 'spam' )
612+ self .assertEqual (getargs_et (b'bytes' , 'latin1' ), b'bytes' )
613+ self .assertEqual (getargs_et (bytearray (b'bytearray' ), 'latin1' ), b'bytearray' )
614+ self .assertRaises (TypeError , getargs_et , memoryview (b'memoryview' ), 'latin1' )
615+ self .assertRaises (TypeError , getargs_et , None , 'latin1' )
616+ self .assertRaises (TypeError , getargs_et , 'nul:\0 ' , 'latin1' )
617+ self .assertRaises (TypeError , getargs_et , b'nul:\0 ' , 'latin1' )
618+ self .assertRaises (TypeError , getargs_et , bytearray (b'nul:\0 ' ), 'latin1' )
619+
620+ def test_es_hash (self ):
621+ from _testcapi import getargs_es_hash
622+ self .assertEqual (getargs_es_hash ('abc\xe9 ' ), b'abc\xc3 \xa9 ' )
623+ self .assertEqual (getargs_es_hash ('abc\xe9 ' , 'latin1' ), b'abc\xe9 ' )
624+ self .assertRaises (UnicodeEncodeError , getargs_es_hash , 'abc\xe9 ' , 'ascii' )
625+ self .assertRaises (LookupError , getargs_es_hash , 'abc\xe9 ' , 'spam' )
626+ self .assertRaises (TypeError , getargs_es_hash , b'bytes' , 'latin1' )
627+ self .assertRaises (TypeError , getargs_es_hash , bytearray (b'bytearray' ), 'latin1' )
628+ self .assertRaises (TypeError , getargs_es_hash , memoryview (b'memoryview' ), 'latin1' )
629+ self .assertRaises (TypeError , getargs_es_hash , None , 'latin1' )
630+ self .assertEqual (getargs_es_hash ('nul:\0 ' , 'latin1' ), b'nul:\0 ' )
631+
632+ buf = bytearray (b'x' * 8 )
633+ self .assertEqual (getargs_es_hash ('abc\xe9 ' , 'latin1' , buf ), b'abc\xe9 ' )
634+ self .assertEqual (buf , bytearray (b'abc\xe9 \x00 xxx' ))
635+ buf = bytearray (b'x' * 5 )
636+ self .assertEqual (getargs_es_hash ('abc\xe9 ' , 'latin1' , buf ), b'abc\xe9 ' )
637+ self .assertEqual (buf , bytearray (b'abc\xe9 \x00 ' ))
638+ buf = bytearray (b'x' * 4 )
639+ self .assertRaises (TypeError , getargs_es_hash , 'abc\xe9 ' , 'latin1' , buf )
640+ self .assertEqual (buf , bytearray (b'x' * 4 ))
641+ buf = bytearray ()
642+ self .assertRaises (TypeError , getargs_es_hash , 'abc\xe9 ' , 'latin1' , buf )
643+
644+ def test_et_hash (self ):
645+ from _testcapi import getargs_et_hash
646+ self .assertEqual (getargs_et_hash ('abc\xe9 ' ), b'abc\xc3 \xa9 ' )
647+ self .assertEqual (getargs_et_hash ('abc\xe9 ' , 'latin1' ), b'abc\xe9 ' )
648+ self .assertRaises (UnicodeEncodeError , getargs_et_hash , 'abc\xe9 ' , 'ascii' )
649+ self .assertRaises (LookupError , getargs_et_hash , 'abc\xe9 ' , 'spam' )
650+ self .assertEqual (getargs_et_hash (b'bytes' , 'latin1' ), b'bytes' )
651+ self .assertEqual (getargs_et_hash (bytearray (b'bytearray' ), 'latin1' ), b'bytearray' )
652+ self .assertRaises (TypeError , getargs_et_hash , memoryview (b'memoryview' ), 'latin1' )
653+ self .assertRaises (TypeError , getargs_et_hash , None , 'latin1' )
654+ self .assertEqual (getargs_et_hash ('nul:\0 ' , 'latin1' ), b'nul:\0 ' )
655+ self .assertEqual (getargs_et_hash (b'nul:\0 ' , 'latin1' ), b'nul:\0 ' )
656+ self .assertEqual (getargs_et_hash (bytearray (b'nul:\0 ' ), 'latin1' ), b'nul:\0 ' )
657+
658+ buf = bytearray (b'x' * 8 )
659+ self .assertEqual (getargs_et_hash ('abc\xe9 ' , 'latin1' , buf ), b'abc\xe9 ' )
660+ self .assertEqual (buf , bytearray (b'abc\xe9 \x00 xxx' ))
661+ buf = bytearray (b'x' * 5 )
662+ self .assertEqual (getargs_et_hash ('abc\xe9 ' , 'latin1' , buf ), b'abc\xe9 ' )
663+ self .assertEqual (buf , bytearray (b'abc\xe9 \x00 ' ))
664+ buf = bytearray (b'x' * 4 )
665+ self .assertRaises (TypeError , getargs_et_hash , 'abc\xe9 ' , 'latin1' , buf )
666+ self .assertEqual (buf , bytearray (b'x' * 4 ))
667+ buf = bytearray ()
668+ self .assertRaises (TypeError , getargs_et_hash , 'abc\xe9 ' , 'latin1' , buf )
575669
576- class Unicode_TestCase (unittest .TestCase ):
577670 def test_u (self ):
578671 from _testcapi import getargs_u
579672 self .assertEqual (getargs_u ('abc\xe9 ' ), 'abc\xe9 ' )
0 commit comments