From 07073b9dc1efb92257c1ec7a1b2cc7824644175a Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 19 Jul 2015 09:17:37 -0700 Subject: [PATCH] A test that the machine is advancing rotors property --- Enigma/Machine.swift | 2 +- EnigmaTests/EnigmaTests.swift | 38 ++++++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/Enigma/Machine.swift b/Enigma/Machine.swift index 55dca2a..b769246 100644 --- a/Enigma/Machine.swift +++ b/Enigma/Machine.swift @@ -43,7 +43,7 @@ class Machine { return output } - private func advanceRotors() { + func advanceRotors() { var shouldAdvance = true // Always advance the first rotor for rotor in rotors.reverse() { if shouldAdvance { diff --git a/EnigmaTests/EnigmaTests.swift b/EnigmaTests/EnigmaTests.swift index a8211b7..6872f31 100644 --- a/EnigmaTests/EnigmaTests.swift +++ b/EnigmaTests/EnigmaTests.swift @@ -13,10 +13,46 @@ let alphaSeries = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" class MachineTests: XCTestCase { + func makeMachine() -> Machine! { + do { + let rotors = [try Rotor(.EnigmaI), try Rotor(.EnigmaII), try Rotor(.EnigmaIII)] + rotors[0].notch = 17 + rotors[1].notch = 5 + rotors[2].notch = 22 + return Machine(rotors: rotors, reflector: try Reflector(.EnigmaB), plugboard: Plugboard()) + } catch let error { + XCTFail("Error while creating machine: \(error)") + } + // Never reached + return nil + } + func testThatItTurnsOn() { - let machine = try! Machine(rotors: [Rotor(.EnigmaI), Rotor(.EnigmaII), Rotor(.EnigmaIII)], reflector: Reflector(.EnigmaB), plugboard: Plugboard()) + let machine = makeMachine() print(try! machine.encode("A")) } + + func testThatRotorsAdvanceAtNotchPositions() { + let machine = makeMachine() + let rotors = machine.rotors + let rotorPermutations = Int(pow(Double(Cryptor.alphabet.count), 3.0)) + for _ in 0..