public void Waith50millisec_UpdateAfter300Millisec_TotalWaitingIsApprox800Millisec() { var spin = new UpdateableSpin(); var watcher = new Stopwatch(); watcher.Start(); const int timeOut = 500; const int spanBeforeUpdate = 300; Task.Factory.StartNew(() => { Thread.Sleep(spanBeforeUpdate); spin.UpdateTimeOut(); }); spin.Wait(TimeSpan.FromMilliseconds(timeOut)); watcher.Stop(); TimeSpan actual = TimeSpan.FromMilliseconds(watcher.ElapsedMilliseconds); const int expected = timeOut + spanBeforeUpdate; TimeSpan left = TimeSpan.FromMilliseconds(expected - expected * 0.1); TimeSpan right = TimeSpan.FromMilliseconds(expected + expected * 0.1); Assert.IsTrue(actual > left && actual < right); }
public void Wait_NoPulse_ReturnsFalse() { var spin = new UpdateableSpin(); bool wasPulsed = spin.Wait(TimeSpan.FromMilliseconds(10)); Assert.IsFalse(wasPulsed); }
public void Wait_Pulse_ReturnsTrue() { UpdateableSpin spin = new UpdateableSpin(); Task.Factory.StartNew(() => { Thread.Sleep(100); spin.Set(); }); bool wasPulsed = spin.Wait(TimeSpan.FromSeconds(10)); Assert.IsTrue(wasPulsed); }
public void Wait50Millisec_CallIsActuallyWaitingFor50Millisec() { var spin = new UpdateableSpin(); Stopwatch watcher = new Stopwatch(); watcher.Start(); spin.Wait(TimeSpan.FromMilliseconds(50)); watcher.Stop(); TimeSpan actual = TimeSpan.FromMilliseconds(watcher.ElapsedMilliseconds); TimeSpan lefEpsilon = TimeSpan.FromMilliseconds(50 - 50 * 0.1); TimeSpan rightEpsilon = TimeSpan.FromMilliseconds(50 + 50 * 0.1); Assert.IsTrue(actual > lefEpsilon && actual < rightEpsilon); }