private RotorNumber GetRotorNumber(string number) { RotorNumber result = RotorNumber.One; switch (number) { case "I": result = RotorNumber.One; break; case "II": result = RotorNumber.Two; break; case "III": result = RotorNumber.Three; break; case "IV": result = RotorNumber.Four; break; case "V": result = RotorNumber.Five; break; } return(result); }
public void EncodeBackTest(RotorNumber number, byte position, char characterToEncode, char result) { SpinningRotor rotor = new SpinningRotor(number, position); rotor.EncodeCharacterBack(ref characterToEncode); Assert.AreEqual(result, characterToEncode); }
public void SetConfiguration(RotorNumber number, byte position) { if (position > 25) { throw new ForbiddenParameterValueException(); } switch (number) { case RotorNumber.One: letters = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"; SpinPoint = 'R'; break; case RotorNumber.Two: letters = "AJDKSIRUXBLHWTMCQGZNPYFVOE"; SpinPoint = 'F'; break; case RotorNumber.Three: letters = "BDFHJLCPRTXVZNYEIWGAKMUSQO"; SpinPoint = 'W'; break; case RotorNumber.Four: letters = "ESOVPZJAYQUIRHXLNFTGKDCMWB"; SpinPoint = 'K'; break; case RotorNumber.Five: letters = "VZBRGITYUPSDNHLXAWMJQOFECK"; SpinPoint = 'A'; break; } CurrentPosition = position; }
public void BuildRotor(RotorNumber number, int notchPosition) { var configuration = DotNetEnigmaConfiguration.RotorWiringConfiguration .EnigmaMachines.FirstOrDefault() .WiringConfigurations.FirstOrDefault(x => x.Rotor == number); var newRotor = new Rotor(notchPosition, configuration.Rotor, configuration.Configuration); _instance.RotorSeries.Enqueue(newRotor); }
/// <summary> /// Chooses the rotors for your enigma machines /// </summary> public void ChooseRotors(RotorNumber rotor1, RotorNumber rotor2, RotorNumber rotor3) { switch (rotor3) { case RotorNumber.Rotor1: this._rotor3 = new Rotor(rotorI, true, rotorITurnover); break; case RotorNumber.Rotor2: this._rotor3 = new Rotor(rotorII, true, rotorIITurnover); break; case RotorNumber.Rotor3: this._rotor3 = new Rotor(rotorIII, true, rotorIIITurnover); break; case RotorNumber.Rotor4: this._rotor3 = new Rotor(rotorIV, true, rotorIVTurnover); break; case RotorNumber.Rotor5: this._rotor3 = new Rotor(rotorV, true, rotorVTurnover); break; default: throw new IndexOutOfRangeException($"{rotor3} is not a valid rotor"); } switch (rotor2) { case RotorNumber.Rotor1: this._rotor2 = new Rotor(rotorI, false, rotorITurnover); break; case RotorNumber.Rotor2: this._rotor2 = new Rotor(rotorII, false, rotorIITurnover); break; case RotorNumber.Rotor3: this._rotor2 = new Rotor(rotorIII, false, rotorIIITurnover); break; case RotorNumber.Rotor4: this._rotor2 = new Rotor(rotorIV, false, rotorIVTurnover); break; case RotorNumber.Rotor5: this._rotor2 = new Rotor(rotorV, false, rotorVTurnover); break; default: throw new IndexOutOfRangeException($"{rotor2} is not a valid rotor"); } switch (rotor1) { case RotorNumber.Rotor1: this._rotor1 = new Rotor(rotorI, false, rotorITurnover); break; case RotorNumber.Rotor2: this._rotor1 = new Rotor(rotorII, false, rotorIITurnover); break; case RotorNumber.Rotor3: this._rotor1 = new Rotor(rotorIII, false, rotorIIITurnover); break; case RotorNumber.Rotor4: this._rotor1 = new Rotor(rotorIV, false, rotorIVTurnover); break; case RotorNumber.Rotor5: this._rotor1 = new Rotor(rotorV, false, rotorVTurnover); break; default: throw new IndexOutOfRangeException($"{rotor1} is not a valid rotor"); } this._rotor3.AdvanceAdjacentRotor += this._rotor2.RotateHandler; this._rotor2.AdvanceAdjacentRotor += this._rotor1.RotateHandler; }
public RotorStepEventArgs(RotorNumber number) { RotorNumber = number; }
public SpinningRotor(RotorNumber number, byte position) { SetConfiguration(number, position); }