CryptoAbstraction_GenerateRandom.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using System.Linq;
  3. #if SILVERLIGHT
  4. using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
  5. #else
  6. using Microsoft.VisualStudio.TestTools.UnitTesting;
  7. #endif
  8. using Renci.SshNet.Security.Cryptography;
  9. namespace Renci.SshNet.Tests.Abstractions
  10. {
  11. [TestClass]
  12. public class CryptoAbstraction_GenerateRandom
  13. {
  14. [TestMethod]
  15. public void ShouldThrowArgumentNullExceptionWhenDataIsNull()
  16. {
  17. const byte[] data = null;
  18. try
  19. {
  20. HashAlgorithmFactory.GenerateRandom(data);
  21. Assert.Fail();
  22. }
  23. catch (ArgumentNullException ex)
  24. {
  25. Assert.IsNull(ex.InnerException);
  26. Assert.AreEqual("data", ex.ParamName);
  27. }
  28. }
  29. [TestMethod]
  30. public void ShouldPerformNoOpWhenDataIsZeroLength()
  31. {
  32. var data = new byte[0];
  33. HashAlgorithmFactory.GenerateRandom(data);
  34. }
  35. [TestMethod]
  36. public void ShouldGenerateRandomSequenceOfValues()
  37. {
  38. var dataLength = new Random().Next(1, 100);
  39. var dataA = new byte[dataLength];
  40. var dataB = new byte[dataLength];
  41. HashAlgorithmFactory.GenerateRandom(dataA);
  42. HashAlgorithmFactory.GenerateRandom(dataB);
  43. Assert.IsFalse(dataA.SequenceEqual(dataB));
  44. }
  45. }
  46. }