From 9f73242a2471a64f06c50e2fc52bf822d6cab13d Mon Sep 17 00:00:00 2001 From: Atif Aziz Date: Fri, 1 Jan 2021 23:18:54 +0100 Subject: [PATCH] Mask "System.Linq" for async streams --- MoreLinq.Test/Async/AsyncEnumerable.cs | 555 +++++++++++++++++++++++++ MoreLinq.Test/MoreLinq.Test.csproj | 5 + appveyor.yml | 2 +- 3 files changed, 561 insertions(+), 1 deletion(-) create mode 100644 MoreLinq.Test/Async/AsyncEnumerable.cs diff --git a/MoreLinq.Test/Async/AsyncEnumerable.cs b/MoreLinq.Test/Async/AsyncEnumerable.cs new file mode 100644 index 000000000..6fe745988 --- /dev/null +++ b/MoreLinq.Test/Async/AsyncEnumerable.cs @@ -0,0 +1,555 @@ +#region License and Terms +// MoreLINQ - Extensions to LINQ to Objects +// Copyright (c) 2021 Atif Aziz. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#endregion + +namespace MoreLinq.Test.Async +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Linq; + using System.Threading.Tasks; + using LinqEnumerable = System.Linq.AsyncEnumerable; + + [DebuggerStepThrough] + static partial class AsyncEnumerable + { + public static ValueTask AggregateAsync(this IAsyncEnumerable source, Func func) => + LinqEnumerable.AggregateAsync(source, func); + + public static ValueTask AggregateAsync(this IAsyncEnumerable source, TAccumulate seed, Func func) => + LinqEnumerable.AggregateAsync(source, seed, func); + + public static ValueTask AggregateAsync(this IAsyncEnumerable source, TAccumulate seed, Func func, Func resultSelector) => + LinqEnumerable.AggregateAsync(source, seed, func, resultSelector); + + public static ValueTask AllAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.AllAsync(source, predicate); + + public static ValueTask AnyAsync(this IAsyncEnumerable source) => + LinqEnumerable.AnyAsync(source); + + public static ValueTask AnyAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.AnyAsync(source, predicate); + + public static IAsyncEnumerable AsEnumerable(this IAsyncEnumerable source) => + LinqEnumerable.AsAsyncEnumerable(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.AverageAsync(source, selector); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static ValueTask AverageAsync(this IAsyncEnumerable source) => + LinqEnumerable.AverageAsync(source); + + public static IAsyncEnumerable Cast(this IAsyncEnumerable source) => + LinqEnumerable.Cast(source); + + public static IAsyncEnumerable Concat(this IAsyncEnumerable first, IAsyncEnumerable second) => + LinqEnumerable.Concat(first, second); + + public static ValueTask ContainsAsync(this IAsyncEnumerable source, TSource value) => + LinqEnumerable.ContainsAsync(source, value); + + public static ValueTask ContainsAsync(this IAsyncEnumerable source, TSource value, IEqualityComparer comparer) => + LinqEnumerable.ContainsAsync(source, value, comparer); + + public static ValueTask CountAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.CountAsync(source, predicate); + + public static ValueTask CountAsync(this IAsyncEnumerable source) => + LinqEnumerable.CountAsync(source); + + public static IAsyncEnumerable DefaultIfEmpty(this IAsyncEnumerable source) => + LinqEnumerable.DefaultIfEmpty(source); + + public static IAsyncEnumerable DefaultIfEmpty(this IAsyncEnumerable source, TSource defaultValue) => + LinqEnumerable.DefaultIfEmpty(source, defaultValue); + + public static IAsyncEnumerable Distinct(this IAsyncEnumerable source) => + LinqEnumerable.Distinct(source); + + public static IAsyncEnumerable Distinct(this IAsyncEnumerable source, IEqualityComparer comparer) => + LinqEnumerable.Distinct(source, comparer); + + public static ValueTask ElementAtAsync(this IAsyncEnumerable source, int index) => + LinqEnumerable.ElementAtAsync(source, index); + + public static ValueTask ElementAtOrDefaultAsync(this IAsyncEnumerable source, int index) => + LinqEnumerable.ElementAtOrDefaultAsync(source, index); + + public static IAsyncEnumerable Empty() => + LinqEnumerable.Empty(); + + public static IAsyncEnumerable Except(this IAsyncEnumerable first, IAsyncEnumerable second) => + LinqEnumerable.Except(first, second); + + public static IAsyncEnumerable Except(this IAsyncEnumerable first, IAsyncEnumerable second, IEqualityComparer comparer) => + LinqEnumerable.Except(first, second, comparer); + + public static ValueTask FirstAsync(this IAsyncEnumerable source) => + LinqEnumerable.FirstAsync(source); + + public static ValueTask FirstAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.FirstAsync(source, predicate); + + public static ValueTask FirstOrDefaultAsync(this IAsyncEnumerable source) => + LinqEnumerable.FirstOrDefaultAsync(source); + + public static ValueTask FirstOrDefaultAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.FirstOrDefaultAsync(source, predicate); + + public static IAsyncEnumerable GroupBy(this IAsyncEnumerable source, Func keySelector, Func, TResult> resultSelector, IEqualityComparer comparer) => + LinqEnumerable.GroupBy(source, keySelector, resultSelector, comparer); + + public static IAsyncEnumerable GroupBy(this IAsyncEnumerable source, Func keySelector, Func, TResult> resultSelector) => + LinqEnumerable.GroupBy(source, keySelector, resultSelector); + + public static IAsyncEnumerable> GroupBy(this IAsyncEnumerable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) => + LinqEnumerable.GroupBy(source, keySelector, elementSelector, comparer); + + public static IAsyncEnumerable GroupBy(this IAsyncEnumerable source, Func keySelector, Func elementSelector, Func, TResult> resultSelector) => + LinqEnumerable.GroupBy(source, keySelector, elementSelector, resultSelector); + + public static IAsyncEnumerable> GroupBy(this IAsyncEnumerable source, Func keySelector, IEqualityComparer comparer) => + LinqEnumerable.GroupBy(source, keySelector, comparer); + + public static IAsyncEnumerable> GroupBy(this IAsyncEnumerable source, Func keySelector) => + LinqEnumerable.GroupBy(source, keySelector); + + public static IAsyncEnumerable> GroupBy(this IAsyncEnumerable source, Func keySelector, Func elementSelector) => + LinqEnumerable.GroupBy(source, keySelector, elementSelector); + + public static IAsyncEnumerable GroupBy(this IAsyncEnumerable source, Func keySelector, Func elementSelector, Func, TResult> resultSelector, IEqualityComparer comparer) => + LinqEnumerable.GroupBy(source, keySelector, elementSelector, resultSelector, comparer); + + public static IAsyncEnumerable GroupJoin(this IAsyncEnumerable outer, IAsyncEnumerable inner, Func outerKeySelector, Func innerKeySelector, Func, TResult> resultSelector) => + LinqEnumerable.GroupJoin(outer, inner, outerKeySelector, innerKeySelector, resultSelector); + + public static IAsyncEnumerable GroupJoin(this IAsyncEnumerable outer, IAsyncEnumerable inner, Func outerKeySelector, Func innerKeySelector, Func, TResult> resultSelector, IEqualityComparer comparer) => + LinqEnumerable.GroupJoin(outer, inner, outerKeySelector, innerKeySelector, resultSelector, comparer); + + public static IAsyncEnumerable Intersect(this IAsyncEnumerable first, IAsyncEnumerable second) => + LinqEnumerable.Intersect(first, second); + + public static IAsyncEnumerable Intersect(this IAsyncEnumerable first, IAsyncEnumerable second, IEqualityComparer comparer) => + LinqEnumerable.Intersect(first, second, comparer); + + public static IAsyncEnumerable Join(this IAsyncEnumerable outer, IAsyncEnumerable inner, Func outerKeySelector, Func innerKeySelector, Func resultSelector) => + LinqEnumerable.Join(outer, inner, outerKeySelector, innerKeySelector, resultSelector); + + public static IAsyncEnumerable Join(this IAsyncEnumerable outer, IAsyncEnumerable inner, Func outerKeySelector, Func innerKeySelector, Func resultSelector, IEqualityComparer comparer) => + LinqEnumerable.Join(outer, inner, outerKeySelector, innerKeySelector, resultSelector, comparer); + + public static ValueTask LastAsync(this IAsyncEnumerable source) => + LinqEnumerable.LastAsync(source); + + public static ValueTask LastAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.LastAsync(source, predicate); + + public static ValueTask LastOrDefaultAsync(this IAsyncEnumerable source) => + LinqEnumerable.LastOrDefaultAsync(source); + + public static ValueTask LastOrDefaultAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.LastOrDefaultAsync(source, predicate); + + public static ValueTask LongCountAsync(this IAsyncEnumerable source) => + LinqEnumerable.LongCountAsync(source); + + public static ValueTask LongCountAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.LongCountAsync(source, predicate); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MaxAsync(source, selector); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MaxAsync(this IAsyncEnumerable source) => + LinqEnumerable.MaxAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.MinAsync(source, selector); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static ValueTask MinAsync(this IAsyncEnumerable source) => + LinqEnumerable.MinAsync(source); + + public static IAsyncEnumerable OfType(this IAsyncEnumerable source) => + LinqEnumerable.OfType(source); + + public static IOrderedAsyncEnumerable OrderBy(this IAsyncEnumerable source, Func keySelector, IComparer comparer) => + LinqEnumerable.OrderBy(source, keySelector, comparer); + + public static IOrderedAsyncEnumerable OrderBy(this IAsyncEnumerable source, Func keySelector) => + LinqEnumerable.OrderBy(source, keySelector); + + public static IOrderedAsyncEnumerable OrderByDescending(this IAsyncEnumerable source, Func keySelector) => + LinqEnumerable.OrderByDescending(source, keySelector); + + public static IOrderedAsyncEnumerable OrderByDescending(this IAsyncEnumerable source, Func keySelector, IComparer comparer) => + LinqEnumerable.OrderByDescending(source, keySelector, comparer); + + public static IAsyncEnumerable Range(int start, int count) => + LinqEnumerable.Range(start, count); + + public static IAsyncEnumerable Repeat(TResult element, int count) => + LinqEnumerable.Repeat(element, count); + + public static IAsyncEnumerable Reverse(this IAsyncEnumerable source) => + LinqEnumerable.Reverse(source); + + public static IAsyncEnumerable Select(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.Select(source, selector); + + public static IAsyncEnumerable Select(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.Select(source, selector); + + public static IAsyncEnumerable SelectMany(this IAsyncEnumerable source, Func> collectionSelector, Func resultSelector) => + LinqEnumerable.SelectMany(source, collectionSelector, resultSelector); + + public static IAsyncEnumerable SelectMany(this IAsyncEnumerable source, Func> selector) => + LinqEnumerable.SelectMany(source, selector); + + public static IAsyncEnumerable SelectMany(this IAsyncEnumerable source, Func> selector) => + LinqEnumerable.SelectMany(source, selector); + + public static IAsyncEnumerable SelectMany(this IAsyncEnumerable source, Func> collectionSelector, Func resultSelector) => + LinqEnumerable.SelectMany(source, collectionSelector, resultSelector); + + public static ValueTask SequenceEqualAsync(this IAsyncEnumerable first, IAsyncEnumerable second, IEqualityComparer comparer) => + LinqEnumerable.SequenceEqualAsync(first, second, comparer); + + public static ValueTask SequenceEqualAsync(this IAsyncEnumerable first, IAsyncEnumerable second) => + LinqEnumerable.SequenceEqualAsync(first, second); + + public static ValueTask SingleAsync(this IAsyncEnumerable source) => + LinqEnumerable.SingleAsync(source); + + public static ValueTask SingleAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.SingleAsync(source, predicate); + + public static ValueTask SingleOrDefaultAsync(this IAsyncEnumerable source) => + LinqEnumerable.SingleOrDefaultAsync(source); + + public static ValueTask SingleOrDefaultAsync(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.SingleOrDefaultAsync(source, predicate); + + public static IAsyncEnumerable Skip(this IAsyncEnumerable source, int count) => + LinqEnumerable.Skip(source, count); + + public static IAsyncEnumerable SkipWhile(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.SkipWhile(source, predicate); + + public static IAsyncEnumerable SkipWhile(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.SkipWhile(source, predicate); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source, Func selector) => + LinqEnumerable.SumAsync(source, selector); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static ValueTask SumAsync(this IAsyncEnumerable source) => + LinqEnumerable.SumAsync(source); + + public static IAsyncEnumerable Take(this IAsyncEnumerable source, int count) => + LinqEnumerable.Take(source, count); + + public static IAsyncEnumerable TakeWhile(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.TakeWhile(source, predicate); + + public static IAsyncEnumerable TakeWhile(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.TakeWhile(source, predicate); + + public static IOrderedAsyncEnumerable ThenBy(this IOrderedAsyncEnumerable source, Func keySelector, IComparer comparer) => + LinqEnumerable.ThenBy(source, keySelector, comparer); + + public static IOrderedAsyncEnumerable ThenBy(this IOrderedAsyncEnumerable source, Func keySelector) => + LinqEnumerable.ThenBy(source, keySelector); + + public static IOrderedAsyncEnumerable ThenByDescending(this IOrderedAsyncEnumerable source, Func keySelector) => + LinqEnumerable.ThenByDescending(source, keySelector); + + public static IOrderedAsyncEnumerable ThenByDescending(this IOrderedAsyncEnumerable source, Func keySelector, IComparer comparer) => + LinqEnumerable.ThenByDescending(source, keySelector, comparer); + + public static ValueTask ToArrayAsync(this IAsyncEnumerable source) => + LinqEnumerable.ToArrayAsync(source); + + public static ValueTask> ToDictionaryAsync(this IAsyncEnumerable source, Func keySelector) => + LinqEnumerable.ToDictionaryAsync(source, keySelector); + + public static ValueTask> ToDictionaryAsync(this IAsyncEnumerable source, Func keySelector, IEqualityComparer comparer) => + LinqEnumerable.ToDictionaryAsync(source, keySelector, comparer); + + public static ValueTask> ToDictionaryAsync(this IAsyncEnumerable source, Func keySelector, Func elementSelector) => + LinqEnumerable.ToDictionaryAsync(source, keySelector, elementSelector); + + public static ValueTask> ToDictionaryAsync(this IAsyncEnumerable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) => + LinqEnumerable.ToDictionaryAsync(source, keySelector, elementSelector, comparer); + + public static ValueTask> ToListAsync(this IAsyncEnumerable source) => + LinqEnumerable.ToListAsync(source); + + public static ValueTask> ToLookupAsync(this IAsyncEnumerable source, Func keySelector) => + LinqEnumerable.ToLookupAsync(source, keySelector); + + public static ValueTask> ToLookupAsync(this IAsyncEnumerable source, Func keySelector, IEqualityComparer comparer) => + LinqEnumerable.ToLookupAsync(source, keySelector, comparer); + + public static ValueTask> ToLookupAsync(this IAsyncEnumerable source, Func keySelector, Func elementSelector) => + LinqEnumerable.ToLookupAsync(source, keySelector, elementSelector); + + public static ValueTask> ToLookupAsync(this IAsyncEnumerable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) => + LinqEnumerable.ToLookupAsync(source, keySelector, elementSelector, comparer); + + public static IAsyncEnumerable Union(this IAsyncEnumerable first, IAsyncEnumerable second) => + LinqEnumerable.Union(first, second); + + public static IAsyncEnumerable Union(this IAsyncEnumerable first, IAsyncEnumerable second, IEqualityComparer comparer) => + LinqEnumerable.Union(first, second, comparer); + + public static IAsyncEnumerable Where(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.Where(source, predicate); + + public static IAsyncEnumerable Where(this IAsyncEnumerable source, Func predicate) => + LinqEnumerable.Where(source, predicate); + + public static IAsyncEnumerable Zip(this IAsyncEnumerable first, IAsyncEnumerable second, Func resultSelector) => + LinqEnumerable.Zip(first, second, resultSelector); + } +} diff --git a/MoreLinq.Test/MoreLinq.Test.csproj b/MoreLinq.Test/MoreLinq.Test.csproj index 0145db46d..79ad7eb36 100644 --- a/MoreLinq.Test/MoreLinq.Test.csproj +++ b/MoreLinq.Test/MoreLinq.Test.csproj @@ -42,6 +42,11 @@ + + + + + diff --git a/appveyor.yml b/appveyor.yml index 82a906dde..f75d8dd70 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -63,7 +63,7 @@ before_build: - dotnet --info build_script: - ps: >- - grep --extended-regexp '^[[:space:]]*using[[:space:]]+System\.Linq;' (dir MoreLinq.Test\*Test.cs) + grep --extended-regexp '^[[:space:]]*using[[:space:]]+System\.Linq;' (dir -Recurse -File -Filter *Test.cs MoreLinq.Test) if ($LASTEXITCODE -eq 0) { throw 'Unit tests should not import System.Linq'