using System.Diagnostics; using Azaion.Annotator.Extensions; using FluentAssertions; using Xunit; using ParallelOptions = Azaion.Annotator.Extensions.ParallelOptions; namespace Azaion.Annotator.Test; public class ParallelExtTest { [Fact] public async Task ParallelExtWorksOkTest() { var list = Enumerable.Range(0, 10).ToList(); var sw = Stopwatch.StartNew(); await ParallelExt.ForEachAsync(list, async (i, cancellationToken) => { await Task.Delay(TimeSpan.FromSeconds(i), cancellationToken); }, new ParallelOptions { CpuUtilPercent = 100, ProgressUpdateInterval = 1 }); var elapsed = sw.Elapsed; elapsed.Should().BeLessThan(TimeSpan.FromSeconds(11)); } [Fact] public async Task ParallelLibWorksOkTest() { var list = Enumerable.Range(0, 10).ToList(); var sw = Stopwatch.StartNew(); await Parallel.ForEachAsync(list, new System.Threading.Tasks.ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount, }, async (i, cancellationToken) => { await Task.Delay(TimeSpan.FromSeconds(i), cancellationToken); }); var elapsed = sw.Elapsed; elapsed.Should().BeLessThan(TimeSpan.FromSeconds(11)); } }