| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | using System;using System.Diagnostics;using System.Threading;using Microsoft.VisualStudio.TestTools.UnitTesting;using Renci.SshNet.Common;using Renci.SshNet.Tests.Common;namespace Renci.SshNet.Tests.Classes.Common{    [TestClass]    public class SemaphoreLightTest : TestBase    {        [TestMethod]        public void SemaphoreLightConstructorTest()        {            var initialCount = new Random().Next(1, 10);            var target = new SemaphoreLight(initialCount);            Assert.AreEqual(initialCount, target.CurrentCount);        }        [TestMethod]        public void Release()        {            var initialCount = new Random().Next(1, 10);            var target = new SemaphoreLight(initialCount);            Assert.AreEqual(initialCount, target.Release());            Assert.AreEqual(initialCount + 1, target.CurrentCount);            Assert.AreEqual(initialCount + 1, target.Release());            Assert.AreEqual(initialCount + 2, target.CurrentCount);        }        /// <summary>        ///A test for Release        ///</summary>        [TestMethod]        public void Release_ReleaseCount()        {            var initialCount = new Random().Next(1, 10);            var target = new SemaphoreLight(initialCount);            var releaseCount1 = new Random().Next(1, 10);            Assert.AreEqual(initialCount, target.Release(releaseCount1));            Assert.AreEqual(initialCount + releaseCount1, target.CurrentCount);            var releaseCount2 = new Random().Next(1, 10);            Assert.AreEqual(initialCount + releaseCount1, target.Release(releaseCount2));            Assert.AreEqual(initialCount + releaseCount1 + releaseCount2, target.CurrentCount);        }        /// <summary>        ///A test for Wait        ///</summary>        [TestMethod]        public void WaitTest()        {            const int sleepTime = 200;             const int initialCount = 2;            var target = new SemaphoreLight(initialCount);            var watch = new Stopwatch();            watch.Start();            target.Wait();            target.Wait();                        Assert.IsTrue(watch.ElapsedMilliseconds < 50);            var releaseThread = new Thread(() =>                {                    Thread.Sleep(sleepTime);                    _ = target.Release();                });            releaseThread.Start();            target.Wait();            watch.Stop();            Assert.IsTrue(watch.ElapsedMilliseconds >= 200);            Assert.IsTrue(watch.ElapsedMilliseconds < 250);        }        [TestMethod]        public void CurrentCountTest()        {            var initialCount = new Random().Next(1, 20);            var target = new SemaphoreLight(initialCount);            Assert.AreEqual(initialCount, target.CurrentCount);        }    }}
 |