summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-08-13 11:15:27 (GMT)
committerGitHub <noreply@github.com>2021-08-13 11:15:27 (GMT)
commit6d134864d62b1838b12e31ec6357b9f0c078deae (patch)
tree78812ab0a70a1bbcdaa9f61773af6d469b553608
parent45a97d91a42795fb0b220e67ee25a14b940c7e50 (diff)
downloadcpython-6d134864d62b1838b12e31ec6357b9f0c078deae.zip
cpython-6d134864d62b1838b12e31ec6357b9f0c078deae.tar.gz
cpython-6d134864d62b1838b12e31ec6357b9f0c078deae.tar.bz2
Added test case based on recommended test cases from RFC 4648 (GH-27747)
(cherry picked from commit 230403a6a19042b174374c3825904d2e857f38b0) Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
-rw-r--r--Lib/test/test_base64.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/Lib/test/test_base64.py b/Lib/test/test_base64.py
index 4f62c41..4184924 100644
--- a/Lib/test/test_base64.py
+++ b/Lib/test/test_base64.py
@@ -714,6 +714,45 @@ class BaseXYTestCase(unittest.TestCase):
def test_ErrorHeritage(self):
self.assertTrue(issubclass(binascii.Error, ValueError))
+ def test_RFC4648_test_cases(self):
+ # test cases from RFC 4648 section 10
+ b64encode = base64.b64encode
+ b32hexencode = base64.b32hexencode
+ b32encode = base64.b32encode
+ b16encode = base64.b16encode
+
+ self.assertEqual(b64encode(b""), b"")
+ self.assertEqual(b64encode(b"f"), b"Zg==")
+ self.assertEqual(b64encode(b"fo"), b"Zm8=")
+ self.assertEqual(b64encode(b"foo"), b"Zm9v")
+ self.assertEqual(b64encode(b"foob"), b"Zm9vYg==")
+ self.assertEqual(b64encode(b"fooba"), b"Zm9vYmE=")
+ self.assertEqual(b64encode(b"foobar"), b"Zm9vYmFy")
+
+ self.assertEqual(b32encode(b""), b"")
+ self.assertEqual(b32encode(b"f"), b"MY======")
+ self.assertEqual(b32encode(b"fo"), b"MZXQ====")
+ self.assertEqual(b32encode(b"foo"), b"MZXW6===")
+ self.assertEqual(b32encode(b"foob"), b"MZXW6YQ=")
+ self.assertEqual(b32encode(b"fooba"), b"MZXW6YTB")
+ self.assertEqual(b32encode(b"foobar"), b"MZXW6YTBOI======")
+
+ self.assertEqual(b32hexencode(b""), b"")
+ self.assertEqual(b32hexencode(b"f"), b"CO======")
+ self.assertEqual(b32hexencode(b"fo"), b"CPNG====")
+ self.assertEqual(b32hexencode(b"foo"), b"CPNMU===")
+ self.assertEqual(b32hexencode(b"foob"), b"CPNMUOG=")
+ self.assertEqual(b32hexencode(b"fooba"), b"CPNMUOJ1")
+ self.assertEqual(b32hexencode(b"foobar"), b"CPNMUOJ1E8======")
+
+ self.assertEqual(b16encode(b""), b"")
+ self.assertEqual(b16encode(b"f"), b"66")
+ self.assertEqual(b16encode(b"fo"), b"666F")
+ self.assertEqual(b16encode(b"foo"), b"666F6F")
+ self.assertEqual(b16encode(b"foob"), b"666F6F62")
+ self.assertEqual(b16encode(b"fooba"), b"666F6F6261")
+ self.assertEqual(b16encode(b"foobar"), b"666F6F626172")
+
class TestMain(unittest.TestCase):
def tearDown(self):