예제 #1
0
 public void TestNotch()
 {
     var socket = new RotorSocket(Rotor.Create("I"));
     while (!socket.IsSocketInNotchPosition)
         socket.Advance();
     Assert.AreEqual('Q', socket.CurrentRingLetter);
 }
예제 #2
0
 public EnigmaMachine()
 {
     _plugboard   = new Plugboard();
     _fastRotor   = new RotorSocket(Rotor.Create("I"));
     _middleRotor = new RotorSocket(Rotor.Create("II"));
     _slowRotor   = new RotorSocket(Rotor.Create("III"));
     _reflector   = new RotorSocket(ReflectorClass.Create("Reflector B"));
 }
예제 #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 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);
 }
예제 #5
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));
        }