< Summary - Combined Code Coverage

Information
Class: NLightning.Bolt11.Factories.TaggedFieldFactory
Assembly: NLightning.Bolt11
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Bolt11/Factories/TaggedFieldFactory.cs
Tag: 30_15166811759
Line coverage
93%
Covered lines: 15
Uncovered lines: 1
Coverable lines: 16
Total lines: 42
Line coverage: 93.7%
Branch coverage
66%
Covered branches: 16
Total branches: 24
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CreateTaggedFieldFromBitReader(...)66.67%24.142493.75%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Bolt11/Factories/TaggedFieldFactory.cs

#LineLine coverage
 1namespace NLightning.Bolt11.Factories;
 2
 3using Common.Utils;
 4using Domain.ValueObjects;
 5using Enums;
 6using Interfaces;
 7using Models.TaggedFields;
 8
 9/// <summary>
 10/// Factory class to create tagged fields from a bit reader.
 11/// </summary>
 12internal static class TaggedFieldFactory
 13{
 14    /// <summary>
 15    /// Create a tagged field from a bit reader.
 16    /// </summary>
 17    /// <param name="type">The type of tagged field to create.</param>
 18    /// <param name="bitReader">The bit reader to read the tagged field from.</param>
 19    /// <param name="length">The length of the tagged field.</param>
 20    /// <returns>The tagged field.</returns>
 21    /// <exception cref="ArgumentException">Thrown when the tagged field type is unknown.</exception>
 22    internal static ITaggedField CreateTaggedFieldFromBitReader(TaggedFieldTypes type, BitReader bitReader,
 23                                                                short length, Network network)
 24    {
 33225        return type switch
 33226        {
 7227            TaggedFieldTypes.PAYMENT_HASH => PaymentHashTaggedField.FromBitReader(bitReader, length),
 828            TaggedFieldTypes.ROUTING_INFO => RoutingInfoTaggedField.FromBitReader(bitReader, length),
 6429            TaggedFieldTypes.FEATURES => FeaturesTaggedField.FromBitReader(bitReader, length),
 1630            TaggedFieldTypes.EXPIRY_TIME => ExpiryTimeTaggedField.FromBitReader(bitReader, length),
 2831            TaggedFieldTypes.FALLBACK_ADDRESS => FallbackAddressTaggedField.FromBitReader(bitReader, length, network),
 3632            TaggedFieldTypes.DESCRIPTION => DescriptionTaggedField.FromBitReader(bitReader, length),
 6433            TaggedFieldTypes.PAYMENT_SECRET => PaymentSecretTaggedField.FromBitReader(bitReader, length),
 434            TaggedFieldTypes.PAYEE_PUB_KEY => PayeePubKeyTaggedField.FromBitReader(bitReader, length),
 3235            TaggedFieldTypes.DESCRIPTION_HASH => DescriptionHashTaggedField.FromBitReader(bitReader, length),
 436            TaggedFieldTypes.MIN_FINAL_CLTV_EXPIRY => MinFinalCltvExpiryTaggedField.FromBitReader(bitReader, length),
 437            TaggedFieldTypes.METADATA => MetadataTaggedField.FromBitReader(bitReader, length),
 33238            // Add more cases as needed for other types
 039            _ => throw new ArgumentException($"Unknown tagged field type: {type}", nameof(type))
 33240        };
 41    }
 42}