示例#1
0
        public void Start_Should_LoopBySpan()
        {
            var mockTask  = MockTask.Create();
            int loopCount = 3;

            using (var loopTask = new SimpleLoopTask())
            {
                loopTask.LoopSpan            = TimeSpan.FromMilliseconds(50);
                loopTask.LoopAction          = mockTask.MockAction;
                loopTask.AfterExitLoopAction = mockTask.MockStopAction;

                loopTask.Start();
                Task.Delay(TimeSpan.FromMilliseconds(50 * loopCount + 20)).Wait();

                mockTask.StopInvoked.ShouldFalse();
            }

            (mockTask.InvokeCount >= 3).ShouldTrue();
            (mockTask.InvokeCount <= 4).ShouldTrue();
            mockTask.StopInvoked.ShouldTrue();
        }
示例#2
0
        public async Task LogMessage_Replace_Should_Ok()
        {
            using (var simpleDaemon = new SimpleDaemon())
            {
                var mockLog = new MockLog();
                simpleDaemon.LogMessage = msg => mockLog.Log(msg);

                var config   = TimeSpan.FromMilliseconds(50);
                var mockTask = MockTask.Create();

                var startResult = await simpleDaemon.Start(config, mockTask.MockAction, false).ConfigureAwait(false);

                startResult.Success.ShouldTrue();
                startResult.Message.Log();

                var startResult2 = await simpleDaemon.Start(config, mockTask.MockAction, false).ConfigureAwait(false);

                startResult2.Success.ShouldFalse();
                startResult2.Message.Log();
            }
        }
示例#3
0
        public async Task Stop_SecondTime_Should_Ignore()
        {
            using (var simpleDaemon = new SimpleDaemon())
            {
                var config   = TimeSpan.FromMilliseconds(50);
                var mockTask = MockTask.Create();

                var startResult = await simpleDaemon.Start(config, mockTask.MockAction, false).ConfigureAwait(false);

                startResult.Success.ShouldTrue();
                startResult.Message.Log();

                var stopResult = await simpleDaemon.Stop().ConfigureAwait(false);

                stopResult.Success.ShouldTrue();
                stopResult.Message.Log();

                var stopResult2 = await simpleDaemon.Stop().ConfigureAwait(false);

                stopResult2.Success.ShouldTrue();
                stopResult2.Message.Log();
            }
        }
示例#4
0
        public void Stop_Should_StopAfterLooping()
        {
            var mockTask  = MockTask.Create();
            int loopCount = 3;

            //todo: fix failed sometimes
            using (var loopTask = new SimpleLoopTask())
            {
                loopTask.LoopSpan            = TimeSpan.FromMilliseconds(50);
                loopTask.LoopAction          = mockTask.MockAction;
                loopTask.AfterExitLoopAction = mockTask.MockStopAction;

                loopTask.Start();
                Task.Delay(TimeSpan.FromMilliseconds(50 * loopCount + 20)).Wait();

                loopTask.Stop();
                Task.Delay(TimeSpan.FromMilliseconds(50 * 2)).Wait();

                mockTask.StopInvoked.ShouldTrue();
            }
            (mockTask.InvokeCount >= 4).ShouldTrue();
            (mockTask.InvokeCount <= 5).ShouldTrue();
            mockTask.StopInvoked.ShouldTrue();
        }