コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }