public void MustExecuteAsynchronously() { var sync = new AutoResetEvent(false); var threadId = Thread.CurrentThread.ManagedThreadId; backup.Setup(b => b.GetAllConfigurations()).Callback(() => { threadId = Thread.CurrentThread.ManagedThreadId; sync.Set(); }); sut.Start(); sync.WaitOne(); sut.Stop(); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, threadId); }
public void MustRespectTimeout() { const int TIMEOUT = 50; var after = default(DateTime); var before = default(DateTime); var configuration = new Mock <IFeatureConfiguration>(); var counter = 0; var list = new List <IFeatureConfiguration> { configuration.Object }; var sync = new AutoResetEvent(false); sut = new AutoRestoreMechanism(backup.Object, logger.Object, systemConfigurationUpdate.Object, TIMEOUT); backup.Setup(b => b.GetAllConfigurations()).Returns(list).Callback(() => { switch (++counter) { case 1: before = DateTime.Now; break; case 2: after = DateTime.Now; list.Clear(); sync.Set(); break; } }); sut.Start(); sync.WaitOne(); sut.Stop(); Assert.IsTrue(after - before >= new TimeSpan(0, 0, 0, 0, TIMEOUT)); }