class TestMarkII(unittest.TestCase): def setUp(self): self.mark2 = MarkII(2, 5) def testExample(self): self.assertEquals(self.mark2.encode('a'), 'S') self.assertEquals(self.mark2.encode('b'), 'T') self.assertEquals(self.mark2.encode('c'), 'U') self.assertEquals(self.mark2.encode('abc'), 'STU') def testQuestionTwo(self): mark2 = MarkII(9, 3) self.assertEquals(mark2.encode('The Desert Fox will move 30 tanks to Calais at dawn'), 'Wkh2Ghvhuw2Ir.2zloo2pryh2632wdqnv2wr2Fdodlv2dw2gdzq') def testDecodeLetter(self): self.assertEquals(self.mark2.decode('S'), 'a') self.assertEquals(self.mark2.decode('T'), 'b') self.assertEquals(self.mark2.decode('U'), 'c') self.assertEquals(self.mark2.decode('STU'), 'abc')
class MarkIV(MarkI): def __init__(self, setting_1, setting_2): self.wheels = MarkII(setting_1, setting_2) self.setting = 0 def encodeLetter(self, letter): partial = self.wheels.encode(letter) result = super(MarkIV, self).encodeLetter(partial) self.setting = self.cipher.index(letter) * 2 return result def decodeLetter(self, letter): partial = super(MarkIV, self).decodeLetter(letter) result = self.wheels.decode(partial) self.setting = self.cipher.index(result) * 2 return result