< Summary

Information
Class: TeleFlow.Telegram.Internal.Handlers.TelegramFilterCompatibility
Assembly: TeleFlow.Framework
File(s): /_/src/TeleFlow.Framework/Internal/Handlers/TelegramFilterCompatibility.cs
Line coverage
81%
Covered lines: 36
Uncovered lines: 8
Coverable lines: 44
Total lines: 68
Line coverage: 81.8%
Branch coverage
65%
Covered branches: 19
Total branches: 29
Branch coverage: 65.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Supports(...)82.35%171794.73%
GetInvalidPlacementMessage(...)42.85%8775%
GetTarget(...)100%11100%
FormatHandlerKind(...)40%6562.5%

File(s)

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

#LineLine coverage
 1namespace TeleFlow.Telegram.Internal.Handlers;
 2
 3internal static class TelegramFilterCompatibility
 4{
 5    public static bool Supports(
 6        TelegramFilterKind kind,
 7        TelegramHandlerKind handlerKind)
 8    {
 5919        return GetTarget(kind) switch
 59110        {
 13711            TelegramFilterTarget.Chat => handlerKind is TelegramHandlerKind.Message or
 13712                TelegramHandlerKind.Command or
 13713                TelegramHandlerKind.Callback or
 13714                TelegramHandlerKind.ChatMember,
 5415            TelegramFilterTarget.MessageThread => handlerKind is TelegramHandlerKind.Message or
 5416                TelegramHandlerKind.Command or
 5417                TelegramHandlerKind.Callback,
 7218            TelegramFilterTarget.Message => handlerKind is TelegramHandlerKind.Message or
 7219                TelegramHandlerKind.Command,
 8920            TelegramFilterTarget.SenderUser => handlerKind is TelegramHandlerKind.Message or
 8921                TelegramHandlerKind.Command or
 8922                TelegramHandlerKind.Callback,
 2923            TelegramFilterTarget.SenderChat => handlerKind is TelegramHandlerKind.Message or
 2924                TelegramHandlerKind.Command,
 20925            TelegramFilterTarget.Callback => handlerKind == TelegramHandlerKind.Callback,
 026            _ => false
 59127        };
 28    }
 29
 30    public static string GetInvalidPlacementMessage(
 31        TelegramFilterKind kind,
 32        TelegramHandlerKind handlerKind)
 33    {
 334        return TelegramFilterFacts.GetTarget(kind) switch
 335        {
 336            TelegramFilterTarget.Chat =>
 037                $"Chat filters cannot be used on {FormatHandlerKind(handlerKind)} handlers.",
 338            TelegramFilterTarget.MessageThread =>
 039                $"Message thread filters cannot be used on {FormatHandlerKind(handlerKind)} handlers.",
 340            TelegramFilterTarget.Message =>
 141                $"Message filters cannot be used on {FormatHandlerKind(handlerKind)} handlers.",
 342            TelegramFilterTarget.SenderUser =>
 143                $"Sender user filters cannot be used on {FormatHandlerKind(handlerKind)} handlers.",
 344            TelegramFilterTarget.SenderChat =>
 145                $"Sender chat filters cannot be used on {FormatHandlerKind(handlerKind)} handlers.",
 346            TelegramFilterTarget.Callback =>
 047                $"Callback filters cannot be used on {FormatHandlerKind(handlerKind)} handlers.",
 048            _ => $"Telegram filter '{kind}' cannot be used on {FormatHandlerKind(handlerKind)} handlers."
 349        };
 50    }
 51
 52    private static TelegramFilterTarget GetTarget(TelegramFilterKind kind)
 53    {
 59154        return TelegramFilterFacts.GetTarget(kind);
 55    }
 56
 57    private static string FormatHandlerKind(TelegramHandlerKind handlerKind)
 58    {
 359        return handlerKind switch
 360        {
 061            TelegramHandlerKind.Command => "command",
 062            TelegramHandlerKind.Message => "message",
 263            TelegramHandlerKind.Callback => "callback",
 164            TelegramHandlerKind.ChatMember => "chat member update",
 065            _ => handlerKind.ToString()
 366        };
 67    }
 68}