Exemple #1
0
        public static IAsyncResult <T, TError> ToAsyncResult <T, TError>(
            this IAsyncMaybe <T> source,
            Func <TError> errorSelector
            )
        {
            if (source is null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (errorSelector is null)
            {
                throw new ArgumentNullException(nameof(errorSelector));
            }

            async Task <IResult <T, TError> > Run(
                IAsyncMaybe <T> asyncMaybe,
                Func <TError> func
                )
            {
                if (await asyncMaybe.HasValue.ConfigureAwait(false))
                {
                    return(ErrorHandling.Result.Value <T, TError>(asyncMaybe.Value));
                }
                return(ErrorHandling.Result.Error <T, TError>(func()));
            }

            return(Run(source, errorSelector).ToAsyncResult());
        }
Exemple #2
0
 /// <summary>
 ///     Returns a <see cref="IMaybe{T}" /> when awaited.
 /// </summary>
 /// <param name="source">
 ///     The <see cref="IMaybe{T}" />.
 /// </param>
 /// <typeparam name="T">
 ///     of <see cref="IMaybe{T}" />.
 ///     The <typeparamref name="T" />
 /// </typeparam>
 /// <returns></returns>
 public static TaskAwaiter <IMaybe <T> > GetAwaiter <T>(this IAsyncMaybe <T> source) =>
 source is null
         ? throw new ArgumentNullException(nameof(source))
Exemple #3
0
 private static async Task <IMaybe <T> > Mapper <T>(IAsyncMaybe <T> source) =>
 await source.HasValue.ConfigureAwait(false)
         ? ErrorHandling.Maybe.Value(source.Value)
         : ErrorHandling.Maybe.None <T>();
Exemple #4
0
        public Task Awaiting_Null_Throws()
        {
            IAsyncMaybe <string> maybe = null;

            return(Assert.ThrowsAsync <ArgumentNullException>(async() => { await maybe; }));
        }