Skip to content

Commit 6d13486

Browse files
Added test case based on recommended test cases from RFC 4648 (GH-27747)
(cherry picked from commit 230403a) Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
1 parent 45a97d9 commit 6d13486

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Lib/test/test_base64.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

718757
class TestMain(unittest.TestCase):
719758
def tearDown(self):

0 commit comments

Comments
 (0)