public async Task CancelTaskTest()
        {
            int started  = 0;
            int finished = 0;

            using (var task = new SharedTask(RunAsync))
                using (var cancellationTokenSource = new CancellationTokenSource(SmallDelay))
                {
                    var task1 = task.GetOrCreateAsync(cancellationTokenSource.Token);
                    var task2 = task.GetOrCreateAsync();

                    await Task.WhenAll(task1, task2);

                    Assert.That(started, Is.EqualTo(1));
                    Assert.That(finished, Is.EqualTo(1));
                }

            async Task RunAsync(CancellationToken cancellationToken)
            {
                started++;
                await Task.Delay(Delay, cancellationToken);

                finished++;
            }
        }
        public async Task SingleTaskTest()
        {
            int started  = 0;
            int finished = 0;

            using (var task = new SharedTask(RunAsync))
            {
                var task1 = task.GetOrCreateAsync();
                var task2 = task.GetOrCreateAsync();

                await Task.WhenAll(task1, task2);

                Assert.That(started, Is.EqualTo(1));
                Assert.That(finished, Is.EqualTo(1));
            }

            async Task RunAsync()
            {
                started++;
                await Task.Delay(Delay);

                finished++;
            }
        }
Esempio n. 3
0
        public async Task SingleTaskTest()
        {
            var task1 = _task.GetOrCreateAsync();
            var task2 = _task.GetOrCreateAsync();

            await Task.WhenAll(task1, task2);

            Assert.That(_started, Is.EqualTo(1));
            Assert.That(_finished, Is.EqualTo(1));
            Assert.That(task1.Result, Is.EqualTo(ExpectedResult));
            Assert.That(task2.Result, Is.EqualTo(ExpectedResult));

            await Task.Delay(1);

            Assert.That(_task.IsRunning(), Is.False);
        }