You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.0 KiB
31 lines
1.0 KiB
import random
|
|
|
|
import unittest
|
|
import onetimepad as OT
|
|
|
|
|
|
class TestOneTimePad(unittest.TestCase):
|
|
|
|
def test_mk_as_alpha_excludes_j(self):
|
|
self.assertTrue('J' not in OT._AS_ALPHA.values())
|
|
|
|
def test_mk_as_alpha_dict_has_25_members(self):
|
|
self.assertEqual(25, len(OT._AS_ALPHA.items()))
|
|
|
|
def test_creates_pad_of_desired_length(self):
|
|
for width in (72, 33, 99, 111):
|
|
pad = OT.create_pad(2000, width=width)
|
|
lines = [line.strip('.') for line in pad.split('\n\n\n')]
|
|
self.assertEqual(2000, len(''.join(lines)))
|
|
|
|
def test_two_out_of_every_three_lines_are_empty_on_new_pad(self):
|
|
pad = OT.create_pad(2000)
|
|
for i, line in enumerate(pad.splitlines()):
|
|
lineno = i + 3
|
|
if not lineno % 3:
|
|
self.assertTrue(bool(len(line)),
|
|
'line {0} is non-empty'.format(lineno))
|
|
else:
|
|
self.assertFalse(bool(len(line)),
|
|
'line {0} is empty'.format(lineno))
|