/
kryptostest.py
80 lines (70 loc) · 3.65 KB
/
kryptostest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import unittest
import mock
import time
from ddt import data, ddt, unpack
from pykryptos.cipher import Decipher
class TestArgs():
replacements = [('A', 'E'), ('Q', 'L'), ('U', 'O')]
alphabet = [
'W', 'X', 'Y', 'Z',
'S', 'T', 'U', 'V',
'F', 'G', 'H', 'I', 'J', 'K', 'M', 'N', 'P', 'Q', 'R',
'A', 'B', 'C', 'D'
]
ciphertext = 'HELLOWORLD'
@ddt
class DecipherTest(unittest.TestCase):
def setUp(self):
self.decipher = Decipher(TestArgs())
def tearDown(self):
pass
@data(
('A', 1),
('G', 7),
('S', 19),
('Y', 25)
)
@unpack
def test_get_index(self, char, expected):
assert self.decipher.get_index(char) == expected
@data(
[['W', 'X', 'S', 'T', 'F','G','H','I','J','K','M','N','P','Q','R','A','B'], 10],
[['W', 'X','Y', 'S', 'T', 'U', 'F','G','H','I','J','K','M','N','P','Q','R','A','B'], 4],
[['W', 'S', 'F', 'G', 'H', 'I', 'J', 'K', 'M', 'N', 'A', 'B', 'C', 'D'], 26]
)
@unpack
def test_get_index_of_visible_chars(self, visible, expected):
assert self.decipher.get_index_from_visible_chars(visible) == expected
@data(
['H', ['W', 'X', 'S', 'T', 'F','G','H','I','J','K','M','N','P','Q','R','A','B'], 'R'],
['E', ['W', 'X', 'S', 'T', 'F','G','H','I','J','K','M','N','P','Q','R','A','B','C'], 'R'],
['L', ['W', 'X', 'S', 'T', 'F','G','H','I','J','K','M','N','P','Q','R','A','B','C','D'], 'C'],
['L', ['W', 'X', 'S', 'T', 'U'], 'O'],
['O', ['W', 'X', 'S', 'T', 'U','A'], 'S'],
['W', ['W', 'X', 'S', 'T', 'U','A','B'], 'C'],
['O', ['W', 'X', 'S', 'T', 'U','A','B','C'], 'X'],
['R', ['W', 'X', 'S', 'T', 'U','A','B','C','D'], 'E'],
['L', ['W', 'X', 'S', 'T', 'U','F'], 'U'],
['D', ['W', 'X', 'S', 'T', 'U','F','A'], 'N']
)
@unpack
def test_add_character(self, character, visible, expected):
assert self.decipher.add(character, visible) == expected
@data(
['R', ['W', 'X', 'S', 'T', 'F','G','H','I','J','K','M','N','P','Q','R','A','B'], 'H'],
['R', ['W', 'X', 'S', 'T', 'F','G','H','I','J','K','M','N','P','Q','R','A','B','C'], 'E'],
['C', ['W', 'X', 'S', 'T', 'F','G','H','I','J','K','M','N','P','Q','R','A','B','C','D'], 'L'],
['O', ['W', 'X', 'S', 'T', 'U'], 'L'],
['S', ['W', 'X', 'S', 'T', 'U','A'], 'O'],
['C', ['W', 'X', 'S', 'T', 'U','A','B'], 'W'],
['X', ['W', 'X', 'S', 'T', 'U','A','B','C'], 'O'],
['E', ['W', 'X', 'S', 'T', 'U','A','B','C','D'], 'R'],
['U', ['W', 'X', 'S', 'T', 'U','F'], 'L'],
['N', ['W', 'X', 'S', 'T', 'U','F','A'], 'D']
)
@unpack
def test_subtract_character(self, character, visible, expected):
assert self.decipher.subtract(character, visible) == expected
def test_get_next_cipher(self):
for character in [c for c in TestArgs.ciphertext]:
assert self.decipher.get_next_cipher() == character