ALE.Tests.Do_Tests.Do_Interval C# (CSharp) Method

Do_Interval() private method

private Do_Interval ( ) : void
return void
        public void Do_Interval()
        {
            var sw = Stopwatch.StartNew();
            var i = 0;
            var elapsed = 0L;
            var wait = new AutoResetEvent(false);
            const int intervalTime = 100;
            var killswitch = Do.Interval(() =>
                            {
                                i++;
                                if (i == 3)
                                {
                                    elapsed = sw.ElapsedMilliseconds;
                                    wait.Set();
                                }
                            }, intervalTime);
            if (wait.WaitOne(intervalTime * 5))
            {
                killswitch.Kill();
                var testMS = intervalTime * .9m;
                Assert.IsTrue(elapsed > testMS, "Elapsed time is greater than " + testMS + " ms. (" + elapsed + ")");
                Assert.AreEqual(3, i, "Too many executions.");
            } else
            {
                Assert.Fail("interval not executed properly. Timeout occurred.");
            }
            Thread.Sleep(intervalTime * 2);
            Assert.AreEqual(3, i, "interval not dead.");
        }