< Summary

Information
Class: Dotnet.Installer.Core.Types.DependencyTree
Assembly: Dotnet.Installer.Core
File(s): /home/runner/work/dotnet-snap/dotnet-snap/src/Dotnet.Installer.Core/Types/DependencyTree.cs
Line coverage
80%
Covered lines: 21
Uncovered lines: 5
Coverable lines: 26
Total lines: 46
Line coverage: 80.7%
Branch coverage
90%
Covered branches: 9
Total branches: 10
Branch coverage: 90%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%1.13150%
.ctor(...)100%22100%
Add(...)100%210%
GetReverseDependencies(...)100%11100%
TraverseReverseDependencies(...)87.5%8.05890.9%

File(s)

/home/runner/work/dotnet-snap/dotnet-snap/src/Dotnet.Installer.Core/Types/DependencyTree.cs

#LineLine coverage
 1using Dotnet.Installer.Core.Models;
 2
 3namespace Dotnet.Installer.Core.Types;
 4
 5public class DependencyTree
 6{
 17    private readonly Dictionary<string, Component> _components = new();
 8
 09    public DependencyTree() { }
 10
 111    public DependencyTree(IEnumerable<Component> components)
 112    {
 1213        foreach (var component in components) _components[component.Key] = component;
 114    }
 15
 16    public void Add(Component component)
 017    {
 018        _components[component.Key] = component;
 019    }
 20
 21    public List<Component> GetReverseDependencies(string startKey)
 322    {
 323        List<Component> reverseDependencies = [];
 324        HashSet<string> visited = [];
 25
 326        TraverseReverseDependencies(startKey, reverseDependencies, visited);
 327        return reverseDependencies;
 328    }
 29
 30    private void TraverseReverseDependencies(string key,
 31        ICollection<Component> reverseDependencies,
 32        ICollection<string> visited)
 633    {
 634        if (!_components.TryGetValue(key, out var currentComponent) || visited.Contains(key))
 035            return;
 36
 637        visited.Add(key);
 38
 2439        foreach (var kvp in _components.Where(kvp =>
 2440                     kvp.Value.Dependencies.Contains(key)))
 341        {
 342            TraverseReverseDependencies(kvp.Key, reverseDependencies, visited);
 343            reverseDependencies.Add(kvp.Value);
 344        }
 645    }
 46}