< Summary

Information
Class: Trailblazer.Pathing.NavigationTransitionRuleTable
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Graph/NavigationTransitionRuleTable.cs
Line coverage
100%
Covered lines: 18
Uncovered lines: 0
Coverable lines: 18
Total lines: 48
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
.ctor(...)100%11100%
get_Count()100%11100%
get_Item(...)100%11100%
get_RetainedBytes()100%22100%
get_PersistentPageCount()100%22100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Graph/NavigationTransitionRuleTable.cs

#LineLine coverage
 1//=======================================================================
 2// NavigationTransitionRuleTable.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2024-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using System;
 9using System.Runtime.CompilerServices;
 10
 11namespace Trailblazer.Pathing;
 12
 13/// <summary>Stores one exact-size, immutable, globally ID-sorted rule array.</summary>
 14internal sealed class NavigationTransitionRuleTable
 15{
 16    internal const long BaseRetainedBytes = 40L;
 117    internal static readonly long RecordRetainedBytes = Unsafe.SizeOf<TraversalTransitionRule>();
 18    private const long ArrayHeaderBytes = 24L;
 19
 120    internal static readonly NavigationTransitionRuleTable Empty = new(
 121        Array.Empty<TraversalTransitionRule>(),
 122        version: 0);
 23
 24    private readonly TraversalTransitionRule[] _rules;
 25
 4826    internal NavigationTransitionRuleTable(
 4827        TraversalTransitionRule[] rules,
 4828        long version)
 29    {
 4830        _rules = rules;
 4831        Version = version;
 4832    }
 33
 296234    internal int Count => _rules.Length;
 35
 36    internal long Version { get; }
 37
 162338    internal TraversalTransitionRule this[int index] => _rules[index];
 39
 91840    internal long RetainedBytes => checked(
 91841        BaseRetainedBytes
 91842        + (_rules.Length == 0
 91843            ? 0L
 91844            : ArrayHeaderBytes + ((long)_rules.Length * RecordRetainedBytes)));
 45
 96146    internal int PersistentPageCount => _rules.Length == 0 ? 1 : 2;
 47
 48}