class TestMarkI(unittest.TestCase): def setUp(self): self.mark1 = MarkI(5) def testFirstExample(self): self.assertEquals(self.mark1.encode('a'), 'f') self.assertEquals(self.mark1.encode('c'), 'h') def testEncodeBang(self): self.assertEquals(self.mark1.encode('!'), '1') def testEncodeString(self): self.assertEquals(self.mark1.encode('X7w'), 'cC,') def testQuestionOne(self): mark1 = MarkI(6) self.assertEquals(mark1.encode('Strong NE Winds!'), 'Yzxutm5TK5cotjy2') def testDecodeLetter(self): self.assertEquals(self.mark1.decode('f'), 'a') self.assertEquals(self.mark1.decode('h'), 'c') self.assertEquals(self.mark1.decode('1'), '!') def testDecodeString(self): self.assertEquals(self.mark1.decode('cC,'), 'X7w')
class MarkII(object): def __init__(self, setting_1, setting_2): self.wheel_1 = MarkI(setting_1) self.wheel_2 = MarkI(setting_2 * -2) def encode(self, message): return self.wheel_2.encode(self.wheel_1.encode(message)) def decode(self, message): return self.wheel_1.decode(self.wheel_2.decode(message))