public void SingleRotorStepTest() { // Check initial wheel positions // AAU — normal step of right rotor Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(1, scramblerUnit.RotorPositions[1]); Assert.AreEqual(21, scramblerUnit.RotorPositions[0]); // AAV — right rotor(III)goes in V—notch position scramblerUnit.Scramble("T"); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(1, scramblerUnit.RotorPositions[1]); Assert.AreEqual(22, scramblerUnit.RotorPositions[0]); // ABW — right rotor takes middle rotor one step further scramblerUnit.Scramble("T"); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(2, scramblerUnit.RotorPositions[1]); Assert.AreEqual(23, scramblerUnit.RotorPositions[0]); // ABX — normal step of right rotor scramblerUnit.Scramble("T"); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(2, scramblerUnit.RotorPositions[1]); Assert.AreEqual(24, scramblerUnit.RotorPositions[0]); }
public void TestEncodingSingleStepKnownWorkingExample() { // Reflector B I II III // 1 1 26 // Knowing working traversal (input) rotors | rotors (output) // (A) B J Z | T L K (U) EnigmaSettings settings = new EnigmaSettings(); settings.Rotors.Add(Constants.Rotors.III); settings.Rotors.Add(Constants.Rotors.II); settings.Rotors.Add(Constants.Rotors.I); settings.RotorPositions.Add(26); settings.RotorPositions.Add(1); settings.RotorPositions.Add(1); settings.Reflector = Constants.Reflectors.B; scramblerUnit = new ScramblerUnitBase(settings); // (A) B J Z | T L K (U) // (1) 2 10 26 | 20 12 11 (21) Assert.AreEqual <string>("U", scramblerUnit.Scramble("A")); // (A) B E S | F D D (B) // (1) 2 5 19 | 6 4 4 (2) Assert.AreEqual <string>("B", scramblerUnit.Scramble("A")); Assert.AreEqual <string>("D", scramblerUnit.Scramble("A")); Assert.AreEqual <string>("Z", scramblerUnit.Scramble("A")); Assert.AreEqual <string>("G", scramblerUnit.Scramble("A")); }
public void DoubleRotorStepTest() { EnigmaSettings settings = new EnigmaSettings(); settings.Rotors.Add(Constants.Rotors.III); settings.Rotors.Add(Constants.Rotors.II); settings.Rotors.Add(Constants.Rotors.I); settings.RotorPositions.Add(21); settings.RotorPositions.Add(4); settings.RotorPositions.Add(1); settings.Reflector = Constants.Reflectors.A; scramblerUnit = new ScramblerUnitBase(settings); // Check initial wheel positions // ADU — normal step of right rotor Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(4, scramblerUnit.RotorPositions[1]); Assert.AreEqual(21, scramblerUnit.RotorPositions[0]); // ADV — right rotor(III)goes in V—notch position scramblerUnit.Scramble("T"); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(4, scramblerUnit.RotorPositions[1]); Assert.AreEqual(22, scramblerUnit.RotorPositions[0]); // AEW — right rotor steps, takes middle rotor(II) one step further, which is now in its own E—notch position scramblerUnit.Scramble("T"); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(5, scramblerUnit.RotorPositions[1]); Assert.AreEqual(23, scramblerUnit.RotorPositions[0]); // BFX — normal step of right rotor, double step of middle rotor, normal step of left rotor scramblerUnit.Scramble("T"); Assert.AreEqual(2, scramblerUnit.RotorPositions[2]); Assert.AreEqual(6, scramblerUnit.RotorPositions[1]); Assert.AreEqual(24, scramblerUnit.RotorPositions[0]); // BFY — normal step of right rotor scramblerUnit.Scramble("T"); Assert.AreEqual(2, scramblerUnit.RotorPositions[2]); Assert.AreEqual(6, scramblerUnit.RotorPositions[1]); Assert.AreEqual(25, scramblerUnit.RotorPositions[0]); }
public void TestDecodingDoubleStep() { EnigmaSettings settings = new EnigmaSettings(); settings.Rotors.Add(Constants.Rotors.III); settings.Rotors.Add(Constants.Rotors.II); settings.Rotors.Add(Constants.Rotors.I); settings.RotorPositions.Add(21); settings.RotorPositions.Add(4); settings.RotorPositions.Add(1); settings.Reflector = Constants.Reflectors.B; scramblerUnit = new ScramblerUnitBase(settings); Assert.AreEqual(21, scramblerUnit.RotorPositions[0]); Assert.AreEqual(4, scramblerUnit.RotorPositions[1]); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual <string>("T", scramblerUnit.Scramble("Y")); Assert.AreEqual <string>("E", scramblerUnit.Scramble("B")); Assert.AreEqual <string>("S", scramblerUnit.Scramble("G")); Assert.AreEqual <string>("T", scramblerUnit.Scramble("F")); Assert.AreEqual <string>("I", scramblerUnit.Scramble("J")); Assert.AreEqual <string>("N", scramblerUnit.Scramble("W")); Assert.AreEqual <string>("G", scramblerUnit.Scramble("Q")); }
public void TestDecodingNoStep() { EnigmaSettings settings = new EnigmaSettings(); settings.Rotors.Add(Constants.Rotors.III); settings.Rotors.Add(Constants.Rotors.II); settings.Rotors.Add(Constants.Rotors.I); settings.RotorPositions.Add(1); settings.RotorPositions.Add(1); settings.RotorPositions.Add(1); settings.Reflector = Constants.Reflectors.B; scramblerUnit = new ScramblerUnitBase(settings); Assert.AreEqual(1, scramblerUnit.RotorPositions[0]); Assert.AreEqual(1, scramblerUnit.RotorPositions[1]); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual <string>("T", scramblerUnit.Scramble("O")); Assert.AreEqual <string>("E", scramblerUnit.Scramble("L")); Assert.AreEqual <string>("S", scramblerUnit.Scramble("P")); Assert.AreEqual <string>("T", scramblerUnit.Scramble("F")); Assert.AreEqual <string>("I", scramblerUnit.Scramble("D")); Assert.AreEqual <string>("N", scramblerUnit.Scramble("E")); Assert.AreEqual <string>("G", scramblerUnit.Scramble("Z")); }
public void TestEncodingAlphabet() { EnigmaSettings settings = new EnigmaSettings(); settings.Rotors.Add(Constants.Rotors.III); settings.Rotors.Add(Constants.Rotors.II); settings.Rotors.Add(Constants.Rotors.I); settings.RotorPositions.Add(1); settings.RotorPositions.Add(1); settings.RotorPositions.Add(1); settings.Reflector = Constants.Reflectors.B; scramblerUnit = new ScramblerUnitBase(settings); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(1, scramblerUnit.RotorPositions[1]); Assert.AreEqual(1, scramblerUnit.RotorPositions[0]); Assert.AreEqual <string>("B", scramblerUnit.Scramble("A")); Assert.AreEqual <string>("J", scramblerUnit.Scramble("B")); Assert.AreEqual <string>("E", scramblerUnit.Scramble("C")); Assert.AreEqual <string>("L", scramblerUnit.Scramble("D")); Assert.AreEqual <string>("R", scramblerUnit.Scramble("E")); Assert.AreEqual <string>("Q", scramblerUnit.Scramble("F")); Assert.AreEqual <string>("Z", scramblerUnit.Scramble("G")); Assert.AreEqual <string>("V", scramblerUnit.Scramble("H")); Assert.AreEqual <string>("J", scramblerUnit.Scramble("I")); Assert.AreEqual <string>("W", scramblerUnit.Scramble("J")); Assert.AreEqual <string>("A", scramblerUnit.Scramble("K")); Assert.AreEqual <string>("R", scramblerUnit.Scramble("L")); Assert.AreEqual <string>("X", scramblerUnit.Scramble("M")); Assert.AreEqual <string>("S", scramblerUnit.Scramble("N")); Assert.AreEqual <string>("N", scramblerUnit.Scramble("O")); Assert.AreEqual <string>("B", scramblerUnit.Scramble("P")); Assert.AreEqual <string>("X", scramblerUnit.Scramble("Q")); Assert.AreEqual <string>("O", scramblerUnit.Scramble("R")); Assert.AreEqual <string>("R", scramblerUnit.Scramble("S")); Assert.AreEqual <string>("S", scramblerUnit.Scramble("T")); Assert.AreEqual <string>("T", scramblerUnit.Scramble("U")); Assert.AreEqual <string>("N", scramblerUnit.Scramble("V")); Assert.AreEqual <string>("C", scramblerUnit.Scramble("W")); Assert.AreEqual <string>("F", scramblerUnit.Scramble("X")); Assert.AreEqual <string>("M", scramblerUnit.Scramble("Y")); Assert.AreEqual <string>("E", scramblerUnit.Scramble("Z")); Assert.AreEqual(1, scramblerUnit.RotorPositions[2]); Assert.AreEqual(2, scramblerUnit.RotorPositions[1]); Assert.AreEqual(1, scramblerUnit.RotorPositions[0]); }