Anapher/Strive

View on GitHub
src/Services/ConferenceManagement/Strive.IntegrationTests/_Helpers/WaitTimeoutExtensions.cs

Summary

Maintainability
A
0 mins
Test Coverage
using System;
using System.Threading;
using System.Threading.Tasks;
using Nito.AsyncEx;
using Strive.IntegrationTests.Extensions;

namespace Strive.IntegrationTests._Helpers
{
    public static class WaitTimeoutExtensions
    {
        public static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(30);

        public static async Task WaitTimeoutAsync(this AsyncAutoResetEvent autoResetEvent, TimeSpan? timeout = null)
        {
            using (var source = new CancellationTokenSource(timeout ?? DefaultTimeout))
            {
                await autoResetEvent.WaitAsync(source.Token);
            }
        }

        public static Task WithDefaultTimeout(this Task task)
        {
            return task.TimeoutAfter(DefaultTimeout);
        }

        public static Task<T> WithDefaultTimeout<T>(this Task<T> task)
        {
            return task.TimeoutAfter(DefaultTimeout);
        }
    }
}