< Summary

Information
Class: TeleFlow.Telegram.Internal.Handlers.TelegramHandlerCandidateStateIndex
Assembly: TeleFlow.Framework
File(s): /_/src/TeleFlow.Framework/Internal/Handlers/TelegramHandlerCandidateStateIndex.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 44
Line coverage: 100%
Branch coverage
83%
Covered branches: 5
Total branches: 6
Branch coverage: 83.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
Add(...)75%44100%
Freeze(...)100%22100%

File(s)

/_/src/TeleFlow.Framework/Internal/Handlers/TelegramHandlerCandidateStateIndex.cs

#LineLine coverage
 1namespace TeleFlow.Telegram.Internal.Handlers;
 2
 3/// <summary>
 4/// Builds immutable state-indexed handler candidate buckets used by message, command, chat-member, and
 5/// callback route plans during Telegram update selection.
 6/// </summary>
 7internal static class TelegramHandlerCandidateStateIndex
 8{
 19    public static readonly IReadOnlyList<TelegramHandlerCandidate> EmptyCandidates = [];
 10
 11    public static void Add(
 12        Dictionary<string, List<TelegramHandlerCandidate>> stateful,
 13        IReadOnlyList<string> states,
 14        TelegramHandlerCandidate candidate)
 15    {
 25016        for (var index = 0; index < states.Count; index++)
 17        {
 6318            var state = states[index];
 19
 6320            if (!stateful.TryGetValue(state, out var candidates))
 21            {
 6322                candidates = [];
 6323                stateful.Add(state, candidates);
 24            }
 25
 6326            candidates.Add(candidate);
 27        }
 6228    }
 29
 30    public static IReadOnlyDictionary<string, IReadOnlyList<TelegramHandlerCandidate>> Freeze(
 31        Dictionary<string, List<TelegramHandlerCandidate>> stateful)
 32    {
 101033        var frozen = new Dictionary<string, IReadOnlyList<TelegramHandlerCandidate>>(
 101034            stateful.Count,
 101035            StringComparer.Ordinal);
 36
 214637        foreach (var item in stateful)
 38        {
 6339            frozen.Add(item.Key, item.Value.ToArray());
 40        }
 41
 101042        return frozen;
 43    }
 44}