예제 #1
0
        public void SetRotorsEnforcesReflector()
        {
            EnigmaI enigma = new EnigmaI();

            EnigmaRotor[] rotors = new EnigmaRotor[4];
            enigma.SetRotors(rotors);
        }
예제 #2
0
        public void CanSetRotors()
        {
            EnigmaI enigma = new EnigmaI();

            EnigmaRotor[] rotors = new EnigmaRotor[4];
            rotors[0] = new EnigmaReflector();
            enigma.SetRotors(rotors);
        }
예제 #3
0
        public void SetRotorsEnforcesRotorCount()
        {
            EnigmaI enigma = new EnigmaI();

            EnigmaRotor[] rotors = new EnigmaRotor[3];
            rotors[0] = new EnigmaReflector();
            enigma.SetRotors(rotors);
        }
예제 #4
0
        public void WriteTextMustReturnValidConversion(string inputText, string expectedOutputText)
        {
            //Arrange
            IEnigma enigma = new EnigmaI();

            //Act
            string calculatedOutputText = enigma.WriteText(inputText);

            //Assert
            Assert.Equal(expectedOutputText, calculatedOutputText);
        }
예제 #5
0
        public ISteckeredEnigma GetEnigmaI(Reflector reflector, Rotor[] rotors)
        {
            EnforceEnigmaIRotorConstraints(rotors);
            EnforceEnigmaIReflectorConstraints(reflector);

            EnigmaRotor[] allRotors = MergeReflectorIntoRotorArray(reflector, rotors);
            //allRotors[1] = _rotorFactory.GetRotor(rotors[0]);
            //allRotors[2] = _rotorFactory.GetRotor(rotors[1]);
            //allRotors[3] = _rotorFactory.GetRotor(rotors[2]);
            EnigmaI returnValue = new EnigmaI();

            returnValue.SetRotors(allRotors);
            return(returnValue);
        }
예제 #6
0
        public void TurnOver_RotorsMustRotateCorrectlyBasedOnTurnOverNotch(string inputText, string expectedOutputText)
        {
            //Arrange
            IEnigma enigma = new EnigmaI();

            //Act
            string calculatedOutputText = string.Empty;

            for (var i = 0; i < inputText.Length; i++)
            {
                calculatedOutputText += enigma.Write(inputText[i]);
            }

            //Assert
            Assert.Equal(expectedOutputText, calculatedOutputText);
        }
예제 #7
0
        public void DecryptSentence_II_I_III_MustBeAValidDecrypt(string inputText, string expectedOutputText)
        {
            //Arrange
            IEnigma enigma = new EnigmaI(new RotorII(), new RotorI(), new RotorIII(), new ReflectorB());

            //Act
            string calculatedOutputText = string.Empty;

            for (var i = 0; i < inputText.Length; i++)
            {
                calculatedOutputText += enigma.Write(inputText[i]);
            }

            //Assert
            Assert.Equal(expectedOutputText, calculatedOutputText);
        }
예제 #8
0
        public void AnotherRotorOrder_Rotors_I_III_II_MustConvertCorrectly(string inputText, string expectedOutputText)
        {
            //Arrange
            IEnigma enigma = new EnigmaI(new RotorI(), new RotorIII(), new RotorII(), new ReflectorB());

            //Act
            string calculatedOutputText = string.Empty;

            for (var i = 0; i < inputText.Length; i++)
            {
                calculatedOutputText += enigma.Write(inputText[i]);
            }

            //Assert
            Assert.Equal(expectedOutputText, calculatedOutputText);
        }
예제 #9
0
        public void TurnOver_RotorsMustRotateCorrectlyBasedOnTurnOverNotchWithStartedOutterConfiguration(char slowRotorSetting, char middleRotorSetting, char fastRotorSetting, string inputText, string expectedOutputText)
        {
            //Arrange
            IEnigma enigma = new EnigmaI();

            enigma.ConfigureOutterRingSetting(slowRotorSetting, middleRotorSetting, fastRotorSetting);

            //Act
            string calculatedOutputText = string.Empty;

            for (var i = 0; i < inputText.Length; i++)
            {
                calculatedOutputText += enigma.Write(inputText[i]);
            }

            //Assert
            Assert.Equal(expectedOutputText, calculatedOutputText);
        }
예제 #10
0
        public void PlugBoardConfigurationMustHaveValidConversion(string plugBoardJumpers, string inputText, string expectedOutputText)
        {
            //Arrange
            IEnigma enigma = new EnigmaI();

            enigma.ConfigurePlugBoard(plugBoardJumpers);

            //Act
            string calculatedOutputText = string.Empty;

            for (var i = 0; i < inputText.Length; i++)
            {
                calculatedOutputText += enigma.Write(inputText[i]);
            }

            //Assert
            Assert.Equal(expectedOutputText, calculatedOutputText);
        }
예제 #11
0
        public void CanNotSetRotorOffsetIfRotorsAreUninitialized()
        {
            EnigmaI enigma = new EnigmaI();

            enigma.SetRotorOffset("AAA");
        }
예제 #12
0
 public void CanConstructEnigmaI()
 {
     EnigmaI enigma = new EnigmaI();
 }
예제 #13
0
        public void CanNotGetRotorSettingsIfRotorsAreUninitialized()
        {
            EnigmaI enigma = new EnigmaI();

            enigma.GetRotorSettings();
        }