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); }
public void TestNotch() { var socket = new RotorSocket(Rotor.Create("I")); while (!socket.IsSocketInNotchPosition) { socket.Advance(); } Assert.AreEqual('Q', socket.CurrentRingLetter); }
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)); }
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)); }
private void MoveRotors() { bool slowRotorIncremented = false; if (_middleRotor.IsSocketInNotchPosition) { slowRotorIncremented = true; _slowRotor = _slowRotor.Advance(); } if (_fastRotor.IsSocketInNotchPosition || slowRotorIncremented) { _middleRotor = _middleRotor.Advance(); } _fastRotor = _fastRotor.Advance(); }