public char GetMappedLetter(char letter, LetterMapper.MappingDirection direction = LetterMapper.MappingDirection.RightToLeft) { var entryLetter = GetEntryLetter(letter); char mappedLetter = _rotor.GetMappedLetter(entryLetter, direction); return GetOutputLetter(mappedLetter); }
public void CheckMapsString() { string expectedResult = "ABC"; string actualResult = LetterMapper.CreateLettersString(new Letters[] { Letters.A, Letters.B, Letters.C }); Assert.That(actualResult, Is.EqualTo(expectedResult)); }
public void CheckEntryWheelGivesCorrectOutputValue() { EntryWheel e = new EntryWheel(LetterMapper.CreateLettersArray("QWERTZUIOASDFGHJKPYXCVBNML")); Letters result = e.GetOutput(Letters.Q); Assert.That(result, Is.EqualTo(Letters.A)); }
public string GetOutput(string text) { Letters[] inputText = LetterMapper.CreateLettersArray(text); Letters[] outputText = new Letters[inputText.Length]; for (int i = 0; i < inputText.Length; i++) { outputText[i] = GetOutput(inputText[i]); } return(LetterMapper.CreateLettersString(outputText)); }
public void CheckMapsLetters() { Letters[] expectedResult = new Letters[] { Letters.A, Letters.B, Letters.C }; Letters[] actualResult = LetterMapper.CreateLettersArray("ABC"); Assert.That(actualResult, Is.EqualTo(expectedResult)); }
public void CheckReflectorCreatesCorrectOutput() { Reflector r = new Reflector(LetterMapper.CreateLettersArray("ZYXWVUTSRQPONMLKJIHGFEDCBA")); Letters result; result = r.GetOutput(Letters.A); Assert.That(result, Is.EqualTo(Letters.Z)); result = r.GetOutput(Letters.Z); Assert.That(result, Is.EqualTo(Letters.A)); }
public void CheckEncypheredMessageDecyphers() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("THISISMYTESTMESSAGE"); Letters[] cyphertext = LetterMapper.CreateLettersArray("OPGNDXOEHCJEXBEDDUO"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public void CheckEncypheredMessageDecyphersWithRolloverAndRingF() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.F, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("THISMESSAGEWILLCAUSEROLLOVER"); Letters[] cyphertext = LetterMapper.CreateLettersArray("UFVWRFXPGFNQBAPWSVNSFXOGCPPK"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public void CheckEncypheredMessageDecyphersWithMoreRollover() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("BAUSSRLQONWLBSZPPAORUKKJPRUYZNOLRKKHFMLJRAVSPOJVTPGHRBLEPRVPZMZYNTBWBISKQUBDWIENKKPHHDZIXBUSROMKSBITTAKICWDIFWPINAMXTHWOOQWZWCEIPGKDRMIGIVRSLCEQGHGKXLCXARNZXWGJSICHWOVIUGPLUVNYYQLOONRJJRQNPSIHYMQXXMUOEEKQPVUFLCPUFFJLFWIDHTVBHFHLCJMKWYZWPJHCOBHYXJEOKOSHCMABEVUNHEFYBMFPQPHVQPLFSYFNESRLWBOIBUEMZHLAZFRJEYGVTSCZTKRTRVOLZEFNZPCYDPCNIYQEEJBNWWXSXSRIYAIVFOUVMBOGQZVWMPYVOAUBIOZWFZVVLGKMCOZMWCSCOXWNJRPPVVUUPRURVIWXIATKFHUTXJSNMHCQLKGTTKAFBTORKWHTUCMTXQJFKORXORVINKXGUNCALBJQHQQEWFCQQMBJYWFAWVSZSMFLHUBZEQYEGPBAXMNYVKJBXRMTLBVZTHPQBRPPSFMQRDLJLVUYUHQRYTEUURQSOGYUAEIJQMXSXFJFTLSOPYJLULMGJGXYBPVJHZAGFIBEPUKKEJMVQMGQMKFMZKXGRKGTSYAZLPUDRRWSOHWC"); Letters[] cyphertext = LetterMapper.CreateLettersArray("ADFNBTUOMHCRANIBRLEVTHRCQJCBVYGUEOMGUKCDTSUQJCUUOFNEKPBXHMQJKEUIXENMCLAHIWCCTJMSETLDMZWJWIYCCNWUHHHFNBWMBITTGETBVFAFRWUTYMQUPZHHRRHYWEJTBAMKJLILXFAZKDHVLDCXMUXDIQKUAXMUXRFYRDWKFFFHFAAQBKLTJNLBRQYUMXDAQZUDTGWGRGITLHPXPDMVOMDWOVBMKRGTRXUKNEDMNILPHYGNJJVOPXZRPRWAQSXERTQVXFPXVVZNTVXAYKLMVUEYZGQOLQSBEVYLRFOQSDUUMLPKAXLWRNBCMCNEFQMERXFIDSNGLBAMVBYOFVUOGNTOLSFKCROCEGOELRWSZTHDNHHISITKKDDUVEKLLDEGCPHWERBOLVTPQQVFBHDDYDSFDYKQLQTCJBUQYGVHVMSOOEDCEUBBPFQPGNIMTTZNSNDTFPMCODOLRZKXHBNTDTQYDNVZZBATJVLQVSVBGVEDBRWQAQUUPTTDPSGZJUWXVOUHNWQMQXHZABKGNUVPELJHVGORJXDYDFINOOYQAFKYORUPEBKNSCOARUUTSAGLWGILXMEPXDYJMSHXQOQRNAQYVJTETTZZPTQUEXYREZOXJTFCJNPK"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public void CheckEncypheredMessageDecyphersWithRollover() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("THISISALONGMESSAGETOTESTROLLOVERINTHEROTORS"); Letters[] cyphertext = LetterMapper.CreateLettersArray("OPGNDXCGMHUNLNECJZGJUPLWOVMOJFUJWQXGSUDEJVY"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public void CheckRotorFailsWithMapTooSmall() { Exception exception = Assert.Throws <Exception>(() => new Rotor(LetterMapper.CreateLettersArray("Z"), Letters.A, Letters.A, Letters.A)); Assert.That(exception.Message, Is.EqualTo("map is 1 but should be 26")); }
public void CheckRotorFailsWithMapDuplicate() { Exception exception = Assert.Throws <Exception>(() => new Rotor(LetterMapper.CreateLettersArray("ZZXWVUTSRQPONMLKJIHGFEDCBA"), Letters.A, Letters.A, Letters.A)); Assert.That(exception.Message, Is.EqualTo("duplicate letter Z in map")); }
public void CheckRotorFailsWithMapTooBig() { Exception exception = Assert.Throws <Exception>(() => new Rotor(LetterMapper.CreateLettersArray("zZYXWVUTSRQPONMLKJIHGFEDCBA"), Letters.A, Letters.A, Letters.A)); Assert.That(exception.Message, Is.EqualTo("map is 27 but should be 26")); }
public void CheckReflectorFailsWithMapDirect() { Exception exception = Assert.Throws <Exception>(() => new Reflector(LetterMapper.CreateLettersArray("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))); Assert.That(exception.Message, Is.EqualTo("reflector contains direct map for A")); }
public void CheckEntryWheelSucceedsWithMapDirect() { EntryWheel e = new EntryWheel(LetterMapper.CreateLettersArray("ABCDEFGHIJKLMNOPQRSTUVWXYZ")); }
public void CheckEntryWheelSucceedsWithMapQwertz() { EntryWheel e = new EntryWheel(LetterMapper.CreateLettersArray("QWERTZUIOASDFGHJKPYXCVBNML")); }