From 05d8d5f6dcf898051c4b64e16b4a673e1b2159e0 Mon Sep 17 00:00:00 2001 From: clowwindy Date: Sat, 13 Dec 2014 12:49:59 +0800 Subject: [PATCH] refine tests --- test/UnitTest.cs | 155 +++++++++++++++++++++++++---------------------- 1 file changed, 84 insertions(+), 71 deletions(-) diff --git a/test/UnitTest.cs b/test/UnitTest.cs index b6856e8e..94fa9053 100755 --- a/test/UnitTest.cs +++ b/test/UnitTest.cs @@ -22,6 +22,41 @@ namespace test Assert.IsTrue(UpdateChecker.CompareVersion("1.3.2", "1.3.1") > 0); } + private void RunEncryptionRound(IEncryptor encryptor, IEncryptor decryptor) + { + byte[] plain = new byte[16384]; + byte[] cipher = new byte[plain.Length + 16]; + byte[] plain2 = new byte[plain.Length + 16]; + int outLen = 0; + int outLen2 = 0; + var random = new Random(); + random.NextBytes(plain); + encryptor.Encrypt(plain, plain.Length, cipher, out outLen); + decryptor.Decrypt(cipher, outLen, plain2, out outLen2); + Assert.AreEqual(plain.Length, outLen2); + for (int j = 0; j < plain.Length; j++) + { + Assert.AreEqual(plain[j], plain2[j]); + } + encryptor.Encrypt(plain, 1000, cipher, out outLen); + decryptor.Decrypt(cipher, outLen, plain2, out outLen2); + Assert.AreEqual(1000, outLen2); + for (int j = 0; j < outLen2; j++) + { + Assert.AreEqual(plain[j], plain2[j]); + } + encryptor.Encrypt(plain, 12333, cipher, out outLen); + decryptor.Decrypt(cipher, outLen, plain2, out outLen2); + Assert.AreEqual(12333, outLen2); + for (int j = 0; j < outLen2; j++) + { + Assert.AreEqual(plain[j], plain2[j]); + } + } + + private static bool encryptionFailed = false; + private static object locker = new object(); + [TestMethod] public void TestPolarSSLEncryption() { @@ -41,51 +76,58 @@ namespace test Assert.IsFalse(encryptionFailed); } - private static bool encryptionFailed = false; - private static object locker = new object(); - private void RunSinglePolarSSLEncryptionThread() { try { - for (int i = 0; i < 100; i++) - { - var random = new Random(); - IEncryptor encryptor; - IEncryptor decryptor; - encryptor = new PolarSSLEncryptor("aes-256-cfb", "barfoo!"); - decryptor = new PolarSSLEncryptor("aes-256-cfb", "barfoo!"); - byte[] plain = new byte[16384]; - byte[] cipher = new byte[plain.Length + 16]; - byte[] plain2 = new byte[plain.Length + 16]; - int outLen = 0; - int outLen2 = 0; - random.NextBytes(plain); - //lock (locker) - //{ - encryptor.Encrypt(plain, plain.Length, cipher, out outLen); - decryptor.Decrypt(cipher, outLen, plain2, out outLen2); - Assert.AreEqual(plain.Length, outLen2); - for (int j = 0; j < plain.Length; j++) - { - Assert.AreEqual(plain[j], plain2[j]); - } - encryptor.Encrypt(plain, 1000, cipher, out outLen); - decryptor.Decrypt(cipher, outLen, plain2, out outLen2); - Assert.AreEqual(1000, outLen2); - for (int j = 0; j < outLen2; j++) - { - Assert.AreEqual(plain[j], plain2[j]); - } - encryptor.Encrypt(plain, 12333, cipher, out outLen); - decryptor.Decrypt(cipher, outLen, plain2, out outLen2); - Assert.AreEqual(12333, outLen2); - for (int j = 0; j < outLen2; j++) - { - Assert.AreEqual(plain[j], plain2[j]); - } - //} - } + for (int i = 0; i < 100; i++) + { + IEncryptor encryptor; + IEncryptor decryptor; + encryptor = new PolarSSLEncryptor("aes-256-cfb", "barfoo!"); + decryptor = new PolarSSLEncryptor("aes-256-cfb", "barfoo!"); + RunEncryptionRound(encryptor, decryptor); + } + } + catch + { + encryptionFailed = true; + throw; + } + } + + [TestMethod] + public void TestRC4Encryption() + { + // run it once before the multi-threading test to initialize global tables + RunSingleRC4EncryptionThread(); + List threads = new List(); + for (int i = 0; i < 10; i++) + { + Thread t = new Thread(new ThreadStart(RunSingleRC4EncryptionThread)); + threads.Add(t); + t.Start(); + } + foreach (Thread t in threads) + { + t.Join(); + } + Assert.IsFalse(encryptionFailed); + } + + private void RunSingleRC4EncryptionThread() + { + try + { + for (int i = 0; i < 100; i++) + { + var random = new Random(); + IEncryptor encryptor; + IEncryptor decryptor; + encryptor = new PolarSSLEncryptor("rc4-md5", "barfoo!"); + decryptor = new PolarSSLEncryptor("rc4-md5", "barfoo!"); + RunEncryptionRound(encryptor, decryptor); + } } catch { @@ -124,36 +166,7 @@ namespace test IEncryptor decryptor; encryptor = new SodiumEncryptor("salsa20", "barfoo!"); decryptor = new SodiumEncryptor("salsa20", "barfoo!"); - byte[] plain = new byte[16384]; - byte[] cipher = new byte[plain.Length + 16]; - byte[] plain2 = new byte[plain.Length + 16]; - int outLen = 0; - int outLen2 = 0; - random.NextBytes(plain); - //lock (locker) - //{ - encryptor.Encrypt(plain, plain.Length, cipher, out outLen); - decryptor.Decrypt(cipher, outLen, plain2, out outLen2); - Assert.AreEqual(plain.Length, outLen2); - for (int j = 0; j < plain.Length; j++) - { - Assert.AreEqual(plain[j], plain2[j]); - } - encryptor.Encrypt(plain, 1000, cipher, out outLen); - decryptor.Decrypt(cipher, outLen, plain2, out outLen2); - Assert.AreEqual(1000, outLen2); - for (int j = 0; j < outLen2; j++) - { - Assert.AreEqual(plain[j], plain2[j]); - } - encryptor.Encrypt(plain, 12333, cipher, out outLen); - decryptor.Decrypt(cipher, outLen, plain2, out outLen2); - Assert.AreEqual(12333, outLen2); - for (int j = 0; j < outLen2; j++) - { - Assert.AreEqual(plain[j], plain2[j]); - } - //} + RunEncryptionRound(encryptor, decryptor); } } catch