68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
import unittest
|
|
|
|
from atbash_cipher import (
|
|
decode,
|
|
encode,
|
|
)
|
|
|
|
# Tests adapted from `problem-specifications//canonical-data.json`
|
|
|
|
|
|
class AtbashCipherTest(unittest.TestCase):
|
|
def test_encode_yes(self):
|
|
self.assertEqual(encode("yes"), "bvh")
|
|
|
|
def test_encode_no(self):
|
|
self.assertEqual(encode("no"), "ml")
|
|
|
|
def test_encode_omg(self):
|
|
self.assertEqual(encode("OMG"), "lnt")
|
|
|
|
def test_encode_spaces(self):
|
|
self.assertEqual(encode("O M G"), "lnt")
|
|
|
|
def test_encode_mindblowingly(self):
|
|
self.assertEqual(encode("mindblowingly"), "nrmwy oldrm tob")
|
|
|
|
def test_encode_numbers(self):
|
|
self.assertEqual(encode("Testing,1 2 3, testing."), "gvhgr mt123 gvhgr mt")
|
|
|
|
def test_encode_deep_thought(self):
|
|
self.assertEqual(encode("Truth is fiction."), "gifgs rhurx grlm")
|
|
|
|
def test_encode_all_the_letters(self):
|
|
self.assertEqual(
|
|
encode("The quick brown fox jumps over the lazy dog."),
|
|
"gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt",
|
|
)
|
|
|
|
def test_decode_exercism(self):
|
|
self.assertEqual(decode("vcvix rhn"), "exercism")
|
|
|
|
def test_decode_a_sentence(self):
|
|
self.assertEqual(
|
|
decode("zmlyh gzxov rhlug vmzhg vkkrm thglm v"),
|
|
"anobstacleisoftenasteppingstone",
|
|
)
|
|
|
|
def test_decode_numbers(self):
|
|
self.assertEqual(decode("gvhgr mt123 gvhgr mt"), "testing123testing")
|
|
|
|
def test_decode_all_the_letters(self):
|
|
self.assertEqual(
|
|
decode("gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt"),
|
|
"thequickbrownfoxjumpsoverthelazydog",
|
|
)
|
|
|
|
def test_decode_with_too_many_spaces(self):
|
|
self.assertEqual(decode("vc vix r hn"), "exercism")
|
|
|
|
def test_decode_with_no_spaces(self):
|
|
self.assertEqual(
|
|
decode("zmlyhgzxovrhlugvmzhgvkkrmthglmv"), "anobstacleisoftenasteppingstone"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|