AbstractionsTest.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Renci.SshNet.Abstractions;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using System;
  4. using System.Threading;
  5. namespace Renci.SshNet.Tests.Classes
  6. {
  7. [TestClass]
  8. public class AbstractionsTest
  9. {
  10. [TestMethod]
  11. public void CryptoAbstraction_GenerateRandom_ShouldPerformNoOpWhenDataIsZeroLength()
  12. {
  13. Assert.AreEqual(0, CryptoAbstraction.GenerateRandom(0).Length);
  14. }
  15. [TestMethod]
  16. public void CryptoAbstraction_GenerateRandom_ShouldGenerateRandomSequenceOfValues()
  17. {
  18. var dataLength = new Random().Next(1, 100);
  19. var dataA = CryptoAbstraction.GenerateRandom(dataLength);
  20. var dataB = CryptoAbstraction.GenerateRandom(dataLength);
  21. Assert.AreEqual(dataLength, dataA.Length);
  22. Assert.AreEqual(dataLength, dataB.Length);
  23. CollectionAssert.AreNotEqual(dataA, dataB);
  24. }
  25. [TestMethod]
  26. public void ThreadAbstraction_ExecuteThread_ShouldThrowArgumentNullExceptionWhenActionIsNull()
  27. {
  28. var ex = Assert.ThrowsExactly<ArgumentNullException>(() => ThreadAbstraction.ExecuteThread(null));
  29. Assert.IsNull(ex.InnerException);
  30. Assert.AreEqual("action", ex.ParamName);
  31. }
  32. [TestMethod]
  33. public void ThreadAbstraction_ExecuteThread_ShouldExecuteActionOnSeparateThread()
  34. {
  35. int threadId = 0;
  36. using var waitHandle = new ManualResetEventSlim();
  37. ThreadAbstraction.ExecuteThread(() =>
  38. {
  39. threadId = Environment.CurrentManagedThreadId;
  40. waitHandle.Set();
  41. });
  42. Assert.IsTrue(waitHandle.Wait(1000));
  43. Assert.AreNotEqual(0, threadId);
  44. Assert.AreNotEqual(Environment.CurrentManagedThreadId, threadId);
  45. }
  46. }
  47. }