< Summary

Information
Class: NanoRoute.Internals.EnumExtensions
Assembly: NanoRoute.dll
File(s): /home/runner/work/nanoroute/nanoroute/Src/NanoRoute/Private/EnumExtensions.cs
Line coverage
100%
Covered lines: 8
Uncovered lines: 0
Coverable lines: 8
Total lines: 33
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

MethodBlocks covered Blocks not covered
Internal()80
TryParseFast<TEnum>(...)20

File(s)

/home/runner/work/nanoroute/nanoroute/Src/NanoRoute/Private/EnumExtensions.cs

#LineLine coverage
 1/********************************************************************************
 2* EnumExtensions.cs                                                             *
 3*                                                                               *
 4* Author: Denes Solti                                                           *
 5********************************************************************************/
 6using System;
 7using System.Collections.Frozen;
 8using System.Collections.Generic;
 9using System.Linq;
 10
 11namespace NanoRoute.Internals
 12{
 13    internal static class EnumExtensions
 14    {
 15        private static class Internal<TEnum> where TEnum : Enum
 16        {
 217            public static readonly IReadOnlyCollection<string> Names = Enum.GetNames(typeof(TEnum));
 18
 219            public static readonly FrozenDictionary<string, TEnum> EnumMapper =
 220                //Enum.GetValues(typeof(TEnum)) cannot be used here as it is not AOT compatible
 221                Names
 222                    .ToDictionary(static name => name, static name => (TEnum) Enum.Parse(typeof(TEnum), name))
 223                    .ToFrozenDictionary(StringComparer.OrdinalIgnoreCase);
 24        }
 25
 26        extension<TEnum>(TEnum) where TEnum : Enum
 27        {
 128            public static IReadOnlyCollection<string> Names => Internal<TEnum>.Names;
 29
 230            public static bool TryParseFast(string s, out TEnum val) => Internal<TEnum>.EnumMapper.TryGetValue(s, out va
 31        }
 32    }
 33}