예제 #1
0
        public void TestRotors()
        {
            var machine = new MyEnigmaMachine();

            RepeatKey(machine, 'A', 26);
            char[] ringLetters = machine.GetCurrentRotorRingLetters();
            Assert.AreEqual('A', ringLetters[2]);
            Assert.AreEqual('B', ringLetters[1]);
            RepeatKey(machine, 'A', 25 * 26);
            ringLetters = machine.GetCurrentRotorRingLetters();
            Assert.AreEqual('B', ringLetters[0]);
        }
예제 #2
0
        public void TestFullCycle()
        {
            var machine = new MyEnigmaMachine();
            int count   = 0;

            do
            {
                machine.PressKey('A');
                count++;
            } while (machine.GetCurrentRotorRingLetters()[0] != 'A' || machine.GetCurrentRotorRingLetters()[1] != 'A' || machine.GetCurrentRotorRingLetters()[2] != 'A');

            Assert.AreEqual(26 * 26 * 25, count);
        }
예제 #3
0
        public void TestDefaultSettings()
        {
            var machine = new MyEnigmaMachine();

            char[] ringLetters = machine.GetCurrentRotorRingLetters();
            Assert.AreEqual('A', ringLetters[2]);
            Assert.AreEqual('A', ringLetters[1]);
            Assert.AreEqual('A', ringLetters[0]);
        }
예제 #4
0
        public void TestRotorsDoubleStepping()
        {
            var machine = new MyEnigmaMachine();

            machine.SetCurrentRotorRingLetters(new [] { 'A', 'D', 'O' });
            RepeatKey(machine, 'A', 6);
            char[] ringLetters = machine.GetCurrentRotorRingLetters();
            Assert.AreEqual('B', ringLetters[0]);
            Assert.AreEqual('F', ringLetters[1]);
            Assert.AreEqual('U', ringLetters[2]);
        }