< Summary

Information
Class: CounterpointCollective.Dataflow.Internal.IDataflowBlockExtensions
Assembly: Dataflow.Fluent
File(s): /builds/counterpointcollective/composabledataflowblocks/Source/Dataflow.Fluent/Dataflow/Internal/IDataFlowBlockExtensions.cs
Line coverage
75%
Covered lines: 30
Uncovered lines: 10
Coverable lines: 40
Total lines: 73
Line coverage: 75%
Branch coverage
71%
Covered branches: 10
Total branches: 14
Branch coverage: 71.4%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
PropagateFaultyCompletion(...)0%2040%
PropagateCompletion(...)100%11100%
PropagateCompletionAsync()100%44100%
PropagateCompletion(...)100%66100%
PropagateCompletion(...)100%11100%
PropagateCompletion(...)100%11100%

File(s)

/builds/counterpointcollective/composabledataflowblocks/Source/Dataflow.Fluent/Dataflow/Internal/IDataFlowBlockExtensions.cs

#LineLine coverage
 1using System.Threading.Tasks.Dataflow;
 2
 3namespace CounterpointCollective.Dataflow.Internal
 4{
 5    /// <exclude />
 6    public static class IDataflowBlockExtensions
 7    {
 8        public static Task PropagateFaultyCompletion(this Task t, params IDataflowBlock[] bs) =>
 09            t.ContinueWith(r =>
 010            {
 011                if (r.IsFaulted)
 012                {
 013                    foreach (var b2 in bs)
 014                    {
 015                        b2.Fault(r.Exception!);
 016                    }
 017                }
 018            });
 19
 20        public static Task PropagateCompletion(this Task t, params IDataflowBlock[] bs) =>
 30321            PropagateCompletion(t, TaskContinuationOptions.None, bs);
 22
 23        public static async Task PropagateCompletionAsync(this Task t, TaskCompletionSource tcs)
 24        {
 29125            var r = await Task.WhenAny(t);
 29026            if (r.IsFaulted)
 27            {
 6928                tcs.SetException(r.Exception!);
 22129            } else if (r.IsCanceled)
 30            {
 2631                tcs.SetCanceled();
 32            } else
 33            {
 19534                tcs.SetResult();
 35            }
 29036        }
 37
 38        public static Task PropagateCompletion(
 39            this Task t,
 40            TaskContinuationOptions continuationOptions,
 41            params IDataflowBlock[] bs
 42        ) =>
 32643            t.ContinueWith(
 32644                r =>
 32645                {
 30246                    if (r.IsFaulted)
 32647                    {
 33648                        foreach (var b2 in bs)
 32649                        {
 8450                            b2.Fault(r.Exception!);
 32651                        }
 32652                    }
 32653                    else
 32654                    {
 89855                        foreach (var b2 in bs)
 32656                        {
 23157                            b2.Complete();
 32658                        }
 32659                    }
 21860                },
 32661                continuationOptions: continuationOptions
 32662            );
 63
 64        public static Task PropagateCompletion(
 65            this IDataflowBlock b,
 66            TaskContinuationOptions continuationOptions,
 67            params IDataflowBlock[] bs
 2368        ) => b.Completion.PropagateCompletion(continuationOptions, bs);
 69
 70        public static Task PropagateCompletion(this IDataflowBlock b, params IDataflowBlock[] bs) =>
 371            b.PropagateCompletion(TaskContinuationOptions.None, bs);
 72    }
 73}