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.
This commit is contained in:
parent
f5e7f39d29
commit
b3b48c81f0
|
@ -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()
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Add tests for ROT-13 codec.
|
Loading…
Reference in New Issue