| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | using Renci.SshNet.Abstractions;using Microsoft.VisualStudio.TestTools.UnitTesting;using System;using System.Threading;namespace Renci.SshNet.Tests.Classes{    [TestClass]    public class AbstractionsTest    {        [TestMethod]        public void SocketAbstraction_CanWrite_ShouldReturnFalseWhenSocketIsNull()        {            Assert.IsFalse(SocketAbstraction.CanWrite(null));        }        [TestMethod]        public void CryptoAbstraction_GenerateRandom_ShouldPerformNoOpWhenDataIsZeroLength()        {            Assert.AreEqual(0, CryptoAbstraction.GenerateRandom(0).Length);        }        [TestMethod]        public void CryptoAbstraction_GenerateRandom_ShouldGenerateRandomSequenceOfValues()        {            var dataLength = new Random().Next(1, 100);            var dataA = CryptoAbstraction.GenerateRandom(dataLength);            var dataB = CryptoAbstraction.GenerateRandom(dataLength);            Assert.AreEqual(dataLength, dataA.Length);            Assert.AreEqual(dataLength, dataB.Length);            CollectionAssert.AreNotEqual(dataA, dataB);        }        [TestMethod]        public void ThreadAbstraction_ExecuteThread_ShouldThrowArgumentNullExceptionWhenActionIsNull()        {            var ex = Assert.ThrowsException<ArgumentNullException>(() => ThreadAbstraction.ExecuteThread(null));            Assert.IsNull(ex.InnerException);            Assert.AreEqual("action", ex.ParamName);        }        [TestMethod]        public void ThreadAbstraction_ExecuteThread_ShouldExecuteActionOnSeparateThread()        {            int threadId = 0;            using var waitHandle = new ManualResetEventSlim();            ThreadAbstraction.ExecuteThread(() =>            {                threadId = Environment.CurrentManagedThreadId;                waitHandle.Set();            });            Assert.IsTrue(waitHandle.Wait(1000));            Assert.AreNotEqual(0, threadId);            Assert.AreNotEqual(Environment.CurrentManagedThreadId, threadId);        }    }}
 |