X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=test_enigma.py;h=b30be760a2aadff3bd5df88da25c616bfdb8768c;hb=60a697926e04e109769b205534c08eeac712a28f;hp=830bb2b1fdda74d4a415396edff434c2afc97052;hpb=a718663ac5643f2ee292a6b5784aa4d4ea95ee17;p=cipher-tools.git diff --git a/test_enigma.py b/test_enigma.py index 830bb2b..b30be76 100644 --- a/test_enigma.py +++ b/test_enigma.py @@ -1,5 +1,6 @@ import unittest import collections +import string from enigma import * @@ -93,6 +94,29 @@ class SimpleWheelTest(unittest.TestCase): for l in string.ascii_lowercase), 'ajpczwrlfbdkotyuqgenhxmivs') + def test_set_position(self): + wheel_3 = SimpleWheel(wheel_iii_spec) + wheel_3.set_position('a') + self.assertEqual(wheel_3.position, 0) + self.assertEqual(wheel_3.position_l, 'a') + + wheel_3.set_position('f') + self.assertEqual(wheel_3.position, 5) + self.assertEqual(wheel_3.position_l, 'f') + + wheel_3.advance() + self.assertEqual(wheel_3.position, 6) + self.assertEqual(wheel_3.position_l, 'g') + + wheel_3.set_position(12) + self.assertEqual(wheel_3.position, 12) + self.assertEqual(wheel_3.position_l, 'm') + + wheel_3.advance() + self.assertEqual(wheel_3.position, 13) + self.assertEqual(wheel_3.position_l, 'n') + + def test_advance(self): wheel_3 = SimpleWheel(wheel_iii_spec) wheel_3.set_position('a') @@ -131,7 +155,7 @@ class SimpleWheelTest(unittest.TestCase): 'tagbpcsdqeufvnzhyixjwlrkom') -class SimpleWheelTest(unittest.TestCase): +class WheelTest(unittest.TestCase): def test_init1(self): wheel = Wheel(wheel_iii_spec, wheel_iii_pegs, position='b', ring_setting=1) @@ -158,7 +182,6 @@ class SimpleWheelTest(unittest.TestCase): for l in string.ascii_lowercase), 'ptlyrmidoxbswhnfckquzgeavj') - def test_advance(self): wheel = Wheel(wheel_vi_spec, wheel_vi_pegs, position='b', ring_setting=3) @@ -243,7 +266,6 @@ class SimpleWheelTest(unittest.TestCase): for l in string.ascii_lowercase), 'ptlyrmidoxbswhnfckquzgeavj') - def test_advance_27(self): wheel = Wheel(wheel_vi_spec, wheel_vi_pegs, position='b', ring_setting=3) @@ -261,6 +283,54 @@ class SimpleWheelTest(unittest.TestCase): for l in string.ascii_lowercase), 'skxqlhcnwarvgmebjptyfdzuio') + def test_set_position(self): + wheel_3 = Wheel(wheel_iii_spec, wheel_iii_pegs, ring_setting=3) + wheel_3.set_position('a') + self.assertEqual(wheel_3.position, 24) + self.assertEqual(wheel_3.position_l, 'a') + self.assertEqual(wheel_3.peg_positions, [21]) + + wheel_3.set_position('z') + self.assertEqual(wheel_3.position, 23) + self.assertEqual(wheel_3.position_l, 'z') + self.assertEqual(wheel_3.peg_positions, [22]) + + wheel_3.set_position(26) + self.assertEqual(wheel_3.position, 23) + self.assertEqual(wheel_3.position_l, 'z') + self.assertEqual(wheel_3.peg_positions, [22]) + + wheel_3.set_position(27) + self.assertEqual(wheel_3.position, 24) + self.assertEqual(wheel_3.position_l, 'a') + self.assertEqual(wheel_3.peg_positions, [21]) + + wheel_3.set_position('f') + self.assertEqual(wheel_3.position, 3) + self.assertEqual(wheel_3.position_l, 'f') + self.assertEqual(wheel_3.peg_positions, [16]) + + wheel_3.set_position(6) + self.assertEqual(wheel_3.position, 3) + self.assertEqual(wheel_3.position_l, 'f') + self.assertEqual(wheel_3.peg_positions, [16]) + + wheel_3.advance() + self.assertEqual(wheel_3.position, 4) + self.assertEqual(wheel_3.position_l, 'g') + self.assertEqual(wheel_3.peg_positions, [15]) + + wheel_3.set_position(12) + self.assertEqual(wheel_3.position, 9) + self.assertEqual(wheel_3.position_l, 'l') + self.assertEqual(wheel_3.peg_positions, [10]) + + wheel_3.advance() + self.assertEqual(wheel_3.position, 10) + self.assertEqual(wheel_3.position_l, 'm') + self.assertEqual(wheel_3.peg_positions, [9]) + + class EnigmaTest(unittest.TestCase): def setUp(self): @@ -281,6 +351,14 @@ class EnigmaTest(unittest.TestCase): 6, 20, 24, 'ua pf rq so ni ey bg hl tx zj') + # Settings for Bletchley Park outreach department's Enigma + self.enigma_bp = Enigma(reflector_b_spec, + wheel_i_spec, wheel_i_pegs, + wheel_iii_spec, wheel_iii_pegs, + wheel_ii_spec, wheel_ii_pegs, + 1, 26, 26, + 'qm we ro tu zj ps dl fg') + def test_middle_advance(self): self.enigma.set_wheels('a', 'a', 't')