@@ -714,6 +714,45 @@ def test_decode_nonascii_str(self):
714714 def test_ErrorHeritage (self ):
715715 self .assertTrue (issubclass (binascii .Error , ValueError ))
716716
717+ def test_RFC4648_test_cases (self ):
718+ # test cases from RFC 4648 section 10
719+ b64encode = base64 .b64encode
720+ b32hexencode = base64 .b32hexencode
721+ b32encode = base64 .b32encode
722+ b16encode = base64 .b16encode
723+
724+ self .assertEqual (b64encode (b"" ), b"" )
725+ self .assertEqual (b64encode (b"f" ), b"Zg==" )
726+ self .assertEqual (b64encode (b"fo" ), b"Zm8=" )
727+ self .assertEqual (b64encode (b"foo" ), b"Zm9v" )
728+ self .assertEqual (b64encode (b"foob" ), b"Zm9vYg==" )
729+ self .assertEqual (b64encode (b"fooba" ), b"Zm9vYmE=" )
730+ self .assertEqual (b64encode (b"foobar" ), b"Zm9vYmFy" )
731+
732+ self .assertEqual (b32encode (b"" ), b"" )
733+ self .assertEqual (b32encode (b"f" ), b"MY======" )
734+ self .assertEqual (b32encode (b"fo" ), b"MZXQ====" )
735+ self .assertEqual (b32encode (b"foo" ), b"MZXW6===" )
736+ self .assertEqual (b32encode (b"foob" ), b"MZXW6YQ=" )
737+ self .assertEqual (b32encode (b"fooba" ), b"MZXW6YTB" )
738+ self .assertEqual (b32encode (b"foobar" ), b"MZXW6YTBOI======" )
739+
740+ self .assertEqual (b32hexencode (b"" ), b"" )
741+ self .assertEqual (b32hexencode (b"f" ), b"CO======" )
742+ self .assertEqual (b32hexencode (b"fo" ), b"CPNG====" )
743+ self .assertEqual (b32hexencode (b"foo" ), b"CPNMU===" )
744+ self .assertEqual (b32hexencode (b"foob" ), b"CPNMUOG=" )
745+ self .assertEqual (b32hexencode (b"fooba" ), b"CPNMUOJ1" )
746+ self .assertEqual (b32hexencode (b"foobar" ), b"CPNMUOJ1E8======" )
747+
748+ self .assertEqual (b16encode (b"" ), b"" )
749+ self .assertEqual (b16encode (b"f" ), b"66" )
750+ self .assertEqual (b16encode (b"fo" ), b"666F" )
751+ self .assertEqual (b16encode (b"foo" ), b"666F6F" )
752+ self .assertEqual (b16encode (b"foob" ), b"666F6F62" )
753+ self .assertEqual (b16encode (b"fooba" ), b"666F6F6261" )
754+ self .assertEqual (b16encode (b"foobar" ), b"666F6F626172" )
755+
717756
718757class TestMain (unittest .TestCase ):
719758 def tearDown (self ):
0 commit comments