Пример #1
0
        public void TestRotorOffsets()
        {
            var socket = new RotorSocket(Rotor.Create("I"));

            Assert.AreEqual('A', socket.CurrentRingLetter);
            socket.Advance();
            Assert.AreEqual('B', socket.CurrentRingLetter);
            socket.Reset();
            Assert.AreEqual('A', socket.CurrentRingLetter);
            for (int i = 0; i < 26; i++)
            {
                socket.Advance();
            }
            Assert.AreEqual('A', socket.CurrentRingLetter);
        }
Пример #2
0
        public void TestNotch()
        {
            var socket = new RotorSocket(Rotor.Create("I"));

            while (!socket.IsSocketInNotchPosition)
            {
                socket.Advance();
            }
            Assert.AreEqual('Q', socket.CurrentRingLetter);
        }
Пример #3
0
        public void TestLetterMappingsWithRotorOffsetSettings()
        {
            var socket = new RotorSocket(Rotor.Create("I", 'B'));

            Assert.AreEqual('K', socket.GetMappedLetter('A'));
            Assert.AreEqual('A', socket.GetMappedLetter('K', LetterMapper.MappingDirection.LeftToRight));
            socket.Advance();
            Assert.AreEqual('E', socket.GetMappedLetter('A'));
            Assert.AreEqual('A', socket.GetMappedLetter('E', LetterMapper.MappingDirection.LeftToRight));
        }
Пример #4
0
        public void TestLetterMappings()
        {
            var socket = new RotorSocket(Rotor.Create("I"));

            Assert.AreEqual('E', socket.GetMappedLetter('A'));
            Assert.AreEqual('A', socket.GetMappedLetter('E', LetterMapper.MappingDirection.LeftToRight));

            //If for example rotor I is in the B-position, an A enters at the letter B
            //which is wired to the K. Because of the offset this K enters the next rotor in the J position.
            socket.Advance();
            Assert.AreEqual('J', socket.GetMappedLetter('A'));
            Assert.AreEqual('A', socket.GetMappedLetter('J', LetterMapper.MappingDirection.LeftToRight));
        }
Пример #5
0
        private void MoveRotors()
        {
            bool slowRotorIncremented = false;

            if (_middleRotor.IsSocketInNotchPosition)
            {
                slowRotorIncremented = true;
                _slowRotor           = _slowRotor.Advance();
            }
            if (_fastRotor.IsSocketInNotchPosition || slowRotorIncremented)
            {
                _middleRotor = _middleRotor.Advance();
            }

            _fastRotor = _fastRotor.Advance();
        }