Exemplo n.º 1
0
        public void if_task_has_already_started_just_return_the_started_task()
        {
            using (var scheduler = new DefaultTaskScheduler(false))
            {
                var data             = 0;
                var completionSource = new TaskCompletionSource <bool>();

                scheduler.Interval(
                    TimeSpan.FromMilliseconds(40),
                    TaskCreationOptions.LongRunning,
                    () =>
                {
                    data++;
                    completionSource.SetResult(true);
                });

                scheduler.Interval(
                    TimeSpan.FromMilliseconds(20),
                    TaskCreationOptions.LongRunning,
                    () =>
                {
                    data++;
                    completionSource.SetResult(true);
                });

                completionSource.Task.Wait();
                scheduler.Stop();

                data.Should().Be(1);
            }
        }
Exemplo n.º 2
0
        public void executes_scheduled_action_muliple_times()
        {
            using (var scheduler = new DefaultTaskScheduler())
            {
                var data             = 0;
                var completionSource = new TaskCompletionSource <bool>();

                scheduler.Interval(
                    TimeSpan.FromMilliseconds(20),
                    TaskCreationOptions.LongRunning,
                    () =>
                {
                    data++;
                    completionSource.SetResult(true);
                });

                completionSource.Task.Wait();
                data.Should().Be(1);

                completionSource = new TaskCompletionSource <bool>();
                completionSource.Task.Wait();
                data.Should().BeGreaterOrEqualTo(2);

                scheduler.Stop();
            }
        }
Exemplo n.º 3
0
        public void throws_if_poll_interval_is_zero()
        {
            Action action = () =>
            {
                using (var scheduler = new DefaultTaskScheduler())
                {
                    var completionSource = new TaskCompletionSource <bool>();

                    scheduler.Interval(TimeSpan.Zero, TaskCreationOptions.LongRunning, () => { completionSource.SetResult(true); });

                    completionSource.Task.Wait();
                    scheduler.Stop();
                }
            };

            action.ShouldThrow <ArgumentOutOfRangeException>();
        }
Exemplo n.º 4
0
        public void executes_scheduled_action_with_token()
        {
            using (var scheduler = new DefaultTaskScheduler())
            {
                var data             = 0;
                var token            = new CancellationTokenSource();
                var completionSource = new TaskCompletionSource <bool>();

                scheduler.Interval(TimeSpan.FromMilliseconds(20), () =>
                {
                    data++;
                    completionSource.SetResult(true);
                }, token.Token);

                completionSource.Task.Wait(token.Token);
                scheduler.Stop();
                data.Should().Be(1);
            }
        }
Exemplo n.º 5
0
        public void can_execute_scheduled_action()
        {
            using (var scheduler = new DefaultTaskScheduler())
            {
                var data             = 0;
                var completionSource = new TaskCompletionSource <bool>();

                scheduler.Interval(TimeSpan.FromMilliseconds(20), () =>
                {
                    data++;
                    completionSource.SetResult(true);
                });

                completionSource.Task.Wait();
                scheduler.Stop();

                data.Should().Be(1);
            }
        }