From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 9 Sep 2019 16:12:01 +0000 (-0700) Subject: bpo-37876: Tests for ROT-13 codec (GH-15314) X-Git-Tag: v3.8.0rc1~252 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b6ef8f2beb90678a4a54218d6169040afbbf9fe1;p=thirdparty%2FPython%2Fcpython.git bpo-37876: Tests for ROT-13 codec (GH-15314) The Rot-13 codec is for educational use but does not have unit tests, dragging down test coverage. This adds a few very simple tests. (cherry picked from commit b3b48c81f09d1472010937f1331c5a208a2a2d48) Co-authored-by: Zeth --- diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index ba7f4847468a..b37525bf6604 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -3343,5 +3343,42 @@ class LocaleCodecTest(unittest.TestCase): self.assertEqual(str(cm.exception), 'unsupported error handler') +class Rot13Test(unittest.TestCase): + """Test the educational ROT-13 codec.""" + def test_encode(self): + ciphertext = codecs.encode("Caesar liked ciphers", 'rot-13') + self.assertEqual(ciphertext, 'Pnrfne yvxrq pvcuref') + + def test_decode(self): + plaintext = codecs.decode('Rg gh, Oehgr?', 'rot-13') + self.assertEqual(plaintext, 'Et tu, Brute?') + + def test_incremental_encode(self): + encoder = codecs.getincrementalencoder('rot-13')() + ciphertext = encoder.encode('ABBA nag Cheryl Baker') + self.assertEqual(ciphertext, 'NOON ant Purely Onxre') + + def test_incremental_decode(self): + decoder = codecs.getincrementaldecoder('rot-13')() + plaintext = decoder.decode('terra Ares envy tha') + self.assertEqual(plaintext, 'green Nerf rail gun') + + +class Rot13UtilTest(unittest.TestCase): + """Test the ROT-13 codec via rot13 function, + i.e. the user has done something like: + $ echo "Hello World" | python -m encodings.rot_13 + """ + def test_rot13_func(self): + infile = io.StringIO('Gb or, be abg gb or, gung vf gur dhrfgvba') + outfile = io.StringIO() + encodings.rot_13.rot13(infile, outfile) + outfile.seek(0) + plain_text = outfile.read() + self.assertEqual( + plain_text, + 'To be, or not to be, that is the question') + + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Tests/2019-08-16-16-15-14.bpo-37876.m3k1w3.rst b/Misc/NEWS.d/next/Tests/2019-08-16-16-15-14.bpo-37876.m3k1w3.rst new file mode 100644 index 000000000000..45702fc63510 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2019-08-16-16-15-14.bpo-37876.m3k1w3.rst @@ -0,0 +1 @@ +Add tests for ROT-13 codec. \ No newline at end of file