public void DecryptFromResources(string inputName, int key, string sampleName, double accuracy, dynamic sup) { LettersSetSettings((TypeLettersSupport)sup); string expect = Properties.Resources.ResourceManager.GetString(inputName); string sample = Properties.Resources.ResourceManager.GetString(sampleName); CharacterFrequencyAnalyzer an = new CharacterFrequencyAnalyzer(sample); string dec = an.Decrypt(Encryption.Encrypt(expect, key)); int errors = 0; int all = 0; for (int i = 0; i < dec.Length || i < expect.Length; i++) { if (i < dec.Length || i < expect.Length) { if (LettersSupport.Contains(expect[i])) { all++; if (dec[i] != expect[i]) { errors++; } } } else { Console.Write($"{i}:{(i < dec.Length ? dec[i] : expect[i])}"); } } Console.WriteLine(); double accuracyCurrent = 1 - (double)errors / all; Console.WriteLine("accuracy: " + accuracyCurrent); Console.WriteLine("dec: " + dec); Assert.IsTrue(accuracyCurrent > accuracy); }
public void AnalyzeTest_EmptyTestZero() { Dictionary <int, int> result = CharacterFrequencyAnalyzer.Analyze(new List <string> { "" }); Assert.IsNotNull(result); Assert.IsFalse(result.Any(e => e.Value > 0)); }
public void AnalyzeTest_SingleSet_Digits() { Dictionary <int, int> result = CharacterFrequencyAnalyzer.Analyze(new List <string> { "123" }); Assert.AreEqual(1, result['1']); Assert.AreEqual(1, result['2']); Assert.AreEqual(1, result['3']); // Select where element(s) e are NOT(a,b or c) IEnumerable <int> allOtherCharacters = result.Where(e => !(e.Key == '1' || e.Key == '2' || e.Key == '3')).Select(e => e.Value); Assert.IsTrue(allOtherCharacters.All(e => e == 0)); }
public void AnalyzeTest_SingleSet_UpperCase() { Dictionary <int, int> result = CharacterFrequencyAnalyzer.Analyze(new List <string> { "ABC" }); Assert.AreEqual(1, result['A']); Assert.AreEqual(1, result['B']); Assert.AreEqual(1, result['C']); // Select where element(s) e are NOT(A,B or C) IEnumerable <int> allOtherCharacters = result.Where(e => !(e.Key == 'A' || e.Key == 'B' || e.Key == 'C')).Select(e => e.Value); Assert.IsTrue(allOtherCharacters.All(e => e == 0)); }
public void AnalyzeTest_SingleSet_Symbols() { List <string> input = new List <string> { ",./;'", "a!" }; Dictionary <int, int> result = CharacterFrequencyAnalyzer.Analyze(input); Assert.AreEqual(1, result[',']); Assert.AreEqual(1, result['.']); Assert.AreEqual(1, result['/']); Assert.AreEqual(1, result[';']); Assert.AreEqual(1, result['\'']); // Select where element(s) e are NOT(a,b or c) IEnumerable <int> allOtherCharacters = result.Where(e => input.Any(s => s.Contains(e.Key.ToString()))) .Select(e => e.Value); Assert.IsTrue(allOtherCharacters.All(e => e == 0)); }
public void Decrypt(string expect, int key, string sample) { CharacterFrequencyAnalyzer an = new CharacterFrequencyAnalyzer(sample); Assert.AreEqual(expect, an.Decrypt(Encryption.Encrypt(expect, key))); }