| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- using System;
- using System.Threading;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using Renci.SshNet.Abstractions;
- namespace Renci.SshNet.Tests.Abstractions
- {
- [TestClass]
- public class ThreadAbstraction_ExecuteThread
- {
- [TestMethod]
- public void ShouldThrowArgumentNullExceptionWhenActionIsNull()
- {
- const Action action = null;
- try
- {
- ThreadAbstraction.ExecuteThread(action);
- Assert.Fail();
- }
- catch (ArgumentNullException ex)
- {
- Assert.IsNull(ex.InnerException);
- Assert.AreEqual("action", ex.ParamName);
- }
- }
- [TestMethod]
- public void ShouldExecuteActionOnSeparateThread()
- {
- DateTime? executionTime = null;
- int executionCount = 0;
- EventWaitHandle waitHandle = new ManualResetEvent(false);
- Action action = () =>
- {
- ThreadAbstraction.Sleep(500);
- executionCount++;
- executionTime = DateTime.Now;
- waitHandle.Set();
- };
- DateTime start = DateTime.Now;
- ThreadAbstraction.ExecuteThread(action);
- Assert.AreEqual(0, executionCount);
- Assert.IsNull(executionTime);
- Assert.IsTrue(waitHandle.WaitOne(2000));
- Assert.AreEqual(1, executionCount);
- Assert.IsNotNull(executionTime);
- var elapsedTime = executionTime.Value - start;
- Assert.IsTrue(elapsedTime > TimeSpan.Zero);
- Assert.IsTrue(elapsedTime > TimeSpan.FromMilliseconds(500));
- Assert.IsTrue(elapsedTime < TimeSpan.FromMilliseconds(1000));
- }
- }
- }
|