< Summary

Information
Class: NexusLabs.Needlr.Injection.OrderedAssemblyProvider
Assembly: NexusLabs.Needlr.Injection
File(s): /home/runner/work/needlr/needlr/src/NexusLabs.Needlr.Injection/OrderedAssemblyProvider.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 34
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetCandidateAssemblies()100%11100%

File(s)

/home/runner/work/needlr/needlr/src/NexusLabs.Needlr.Injection/OrderedAssemblyProvider.cs

#LineLine coverage
 1using System.Reflection;
 2
 3using NexusLabs.Needlr.Injection.AssemblyOrdering;
 4
 5namespace NexusLabs.Needlr.Injection;
 6
 7/// <summary>
 8/// An assembly provider that wraps another provider and applies ordering to the results.
 9/// </summary>
 10[DoNotAutoRegister]
 11internal sealed class OrderedAssemblyProvider : IAssemblyProvider
 12{
 13    private readonly IAssemblyProvider _inner;
 14    private readonly AssemblyOrderBuilder _orderBuilder;
 15    private readonly Lazy<IReadOnlyList<Assembly>> _lazyAssemblies;
 16
 3017    public OrderedAssemblyProvider(
 3018        IAssemblyProvider inner,
 3019        AssemblyOrderBuilder orderBuilder)
 20    {
 3021        ArgumentNullException.ThrowIfNull(inner);
 3022        ArgumentNullException.ThrowIfNull(orderBuilder);
 23
 3024        _inner = inner;
 3025        _orderBuilder = orderBuilder;
 3026        _lazyAssemblies = new Lazy<IReadOnlyList<Assembly>>(() =>
 3027        {
 3028            var assemblies = _inner.GetCandidateAssemblies();
 3029            return _orderBuilder.Sort(assemblies);
 3030        });
 3031    }
 32
 3633    public IReadOnlyList<Assembly> GetCandidateAssemblies() => _lazyAssemblies.Value;
 34}