< Summary

Information
Class: SwitchBlade.Services.PluginInfoMapper
Assembly: SwitchBlade
File(s): D:\a\switchblade\switchblade\Services\PluginInfoMapper.cs
Tag: 203_23722840422
Line coverage
100%
Covered lines: 28
Uncovered lines: 0
Coverable lines: 28
Total lines: 61
Line coverage: 100%
Branch coverage
100%
Covered branches: 12
Total branches: 12
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MapToInfo(...)100%11100%
MapToInfo(...)100%22100%
GetTypeName(...)100%22100%
GetAssemblyName(...)100%22100%
GetVersion(...)100%44100%
IsInternalProvider(...)100%22100%

File(s)

D:\a\switchblade\switchblade\Services\PluginInfoMapper.cs

#LineLine coverage
 1using System.Reflection;
 2using SwitchBlade.Contracts;
 3using SwitchBlade.Core;
 4namespace SwitchBlade.Services
 5{
 6    /// <summary>
 7    /// Pure, stateless mapper that converts <see cref="IWindowProvider"/> instances
 8    /// into <see cref="PluginInfo"/> DTOs for UI display.
 9    /// </summary>
 10    public static class PluginInfoMapper
 11    {
 12        /// <summary>
 13        /// Maps a provider to its <see cref="PluginInfo"/> using reflection metadata.
 14        /// </summary>
 15        public static PluginInfo MapToInfo(IWindowProvider provider)
 616        {
 617            var type = provider.GetType();
 618            var assembly = type.Assembly;
 619            var assemblyName = assembly.GetName();
 20
 621            return MapToInfo(
 622                provider,
 623                GetTypeName(type),
 624                GetAssemblyName(assemblyName),
 625                GetVersion(assemblyName),
 626                IsInternalProvider(assembly, assemblyName));
 627        }
 28
 29        /// <summary>
 30        /// Maps a provider to its <see cref="PluginInfo"/> from pre-resolved metadata.
 31        /// </summary>
 32        public static PluginInfo MapToInfo(
 33            IWindowProvider provider,
 34            string typeName,
 35            string assemblyName,
 36            string version,
 37            bool isInternal)
 738        {
 739            return new PluginInfo
 740            {
 741                Name = provider.PluginName,
 742                TypeName = typeName,
 743                AssemblyName = assemblyName,
 744                Version = version,
 745                IsInternal = isInternal,
 746                HasSettings = provider is IConfigurablePlugin configurable && configurable.HasSettings,
 747                Provider = provider,
 748                IsEnabled = true
 749            };
 750        }
 51
 852        public static string GetTypeName(Type type) => type.FullName ?? type.Name;
 53
 854        public static string GetAssemblyName(AssemblyName name) => name.Name ?? "Unknown";
 55
 856        public static string GetVersion(AssemblyName name) => name.Version?.ToString() ?? "0.0.0";
 57
 58        public static bool IsInternalProvider(Assembly assembly, AssemblyName name)
 959            => assembly == typeof(PluginService).Assembly || name.Name == "SwitchBlade";
 60    }
 61}