-import unittest
+import pytest
import string
-from cipher.affine import *
-from support.utilities import *
-
-class AffineTest(unittest.TestCase):
-
- def test_encipher_letter(self):
- for p, c in zip(
- string.ascii_letters,
- 'hknqtwzcfiloruxadgjmpsvybeHKNQTWZCFILORUXADGJMPSVYBE'):
- self.assertEqual(affine_encipher_letter(p, 3, 5, True), c)
-
- for p, c in zip(
- string.ascii_letters,
- 'filoruxadgjmpsvybehknqtwzcFILORUXADGJMPSVYBEHKNQTWZC'):
- self.assertEqual(affine_encipher_letter(p, 3, 5, False), c)
-
-
- def test_decipher_letter(self):
- for p, c in zip(
- string.ascii_letters,
- 'hknqtwzcfiloruxadgjmpsvybeHKNQTWZCFILORUXADGJMPSVYBE'):
- self.assertEqual(affine_decipher_letter(c, 3, 5, True), p)
-
- for p, c in zip(
- string.ascii_letters,
- 'filoruxadgjmpsvybehknqtwzcFILORUXADGJMPSVYBEHKNQTWZC'):
- self.assertEqual(affine_decipher_letter(c, 3, 5, False), p)
-
- def test_encipher_message(self):
- self.assertEqual(affine_encipher(
- 'hours passed during which jerico tried every trick he could think of',
- 15, 22, True),
- 'lmyfu bkuusd dyfaxw claol psfaom jfasd snsfg jfaoe ls omytd jlaxe mh')
-
-
- def test_decipher_message(self):
- self.assertEqual(affine_decipher('lmyfu bkuusd dyfaxw claol psfaom jfasd snsfg jfaoe ls omytd jlaxe mh',
- 15, 22, True),
- 'hours passed during which jerico tried every trick he could think of')
-
-
- def test_break(self):
- ciphertext = '''lmyfu bkuusd dyfaxw claol psfaom jfasd snsfg jfaoe ls
- omytd jlaxe mh jm bfmibj umis hfsul axubafkjamx. ls kffkxwsd jls
- ofgbjmwfkiu olfmxmtmwaokttg jlsx ls kffkxwsd jlsi zg tsxwjl. jlsx
- ls umfjsd jlsi zg hfsqysxog. ls dmmdtsd mx jls bats mh bkbsf. ls
- bfmctsd kfmyxd jls lyj, mztanamyu xmc jm clm cku tmmeaxw kj lai
- kxd clm ckuxj.'''
- expected_key = (15, 22, True)
- expected_score = -340.6011819
- actual_key, actual_score = affine_break(ciphertext)
- self.assertEqual(expected_key, actual_key)
- self.assertAlmostEqual(expected_score, actual_score)
-
-if __name__ == '__main__':
- unittest.main()
+from szyfrow.affine import *
+from szyfrow.support.utilities import *
+
+
+def test_encipher_letter():
+ for p, c in zip(
+ string.ascii_letters,
+ 'hknqtwzcfiloruxadgjmpsvybeHKNQTWZCFILORUXADGJMPSVYBE'):
+ assert affine_encipher_letter(p, 3, 5, True) == c
+
+ for p, c in zip(
+ string.ascii_letters,
+ 'filoruxadgjmpsvybehknqtwzcFILORUXADGJMPSVYBEHKNQTWZC'):
+ assert affine_encipher_letter(p, 3, 5, False) == c
+
+
+def test_decipher_letter():
+ for p, c in zip(
+ string.ascii_letters,
+ 'hknqtwzcfiloruxadgjmpsvybeHKNQTWZCFILORUXADGJMPSVYBE'):
+ assert affine_decipher_letter(c, 3, 5, True) == p
+
+ for p, c in zip(
+ string.ascii_letters,
+ 'filoruxadgjmpsvybehknqtwzcFILORUXADGJMPSVYBEHKNQTWZC'):
+ assert affine_decipher_letter(c, 3, 5, False) == p
+
+def test_encipher_message():
+ enciphered = affine_encipher(
+ 'hours passed during which jerico tried every trick he could think of',
+ 15, 22, True)
+ expected = 'lmyfu bkuusd dyfaxw claol psfaom jfasd snsfg jfaoe ls omytd jlaxe mh'
+ assert enciphered == expected
+
+
+def test_decipher_message():
+
+ deciphered = affine_decipher('lmyfu bkuusd dyfaxw claol psfaom jfasd snsfg jfaoe ls omytd jlaxe mh',
+ 15, 22, True)
+ expected = 'hours passed during which jerico tried every trick he could think of'
+ assert deciphered == expected
+
+
+def test_break():
+ ciphertext = '''lmyfu bkuusd dyfaxw claol psfaom jfasd snsfg jfaoe ls
+ omytd jlaxe mh jm bfmibj umis hfsul axubafkjamx. ls kffkxwsd jls
+ ofgbjmwfkiu olfmxmtmwaokttg jlsx ls kffkxwsd jlsi zg tsxwjl. jlsx
+ ls umfjsd jlsi zg hfsqysxog. ls dmmdtsd mx jls bats mh bkbsf. ls
+ bfmctsd kfmyxd jls lyj, mztanamyu xmc jm clm cku tmmeaxw kj lai
+ kxd clm ckuxj.'''
+ expected_key = (15, 22, True)
+ expected_score = -340.6011819
+ actual_key, actual_score = affine_break(ciphertext)
+ assert expected_key == actual_key
+ assert expected_score == pytest.approx(actual_score)