< Summary - Combined Code Coverage

Information
Class: NLightning.Bolt11.Factories.TaggedFieldFactory
Assembly: NLightning.Bolt11.Blazor
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Bolt11/Factories/TaggedFieldFactory.cs
Tag: 49_19945309242
Line coverage
0%
Covered lines: 0
Uncovered lines: 17
Coverable lines: 17
Total lines: 46
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 24
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CreateTaggedFieldFromBitReader(...)0%600240%

File(s)

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

#LineLine coverage
 1namespace NLightning.Bolt11.Factories;
 2
 3using Domain.Protocol.ValueObjects;
 4using Domain.Utils;
 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    /// <param name="bitcoinNetwork"> The network context for the tagged field, used for address parsing.</param>
 21    /// <returns>
 22    /// The tagged field, or <c>null</c> if the field type does not contain actual data (e.g., when a routing info field
 23    /// </returns>
 24    /// <exception cref="ArgumentException">Thrown when the tagged field type is unknown.</exception>
 25    internal static ITaggedField? CreateTaggedFieldFromBitReader(TaggedFieldTypes type, BitReader bitReader,
 26                                                                 short length, BitcoinNetwork bitcoinNetwork)
 27    {
 028        return type switch
 029        {
 030            TaggedFieldTypes.PaymentHash => PaymentHashTaggedField.FromBitReader(bitReader, length),
 031            TaggedFieldTypes.RoutingInfo => RoutingInfoTaggedField.FromBitReader(bitReader, length),
 032            TaggedFieldTypes.Features => FeaturesTaggedField.FromBitReader(bitReader, length),
 033            TaggedFieldTypes.ExpiryTime => ExpiryTimeTaggedField.FromBitReader(bitReader, length),
 034            TaggedFieldTypes.FallbackAddress => FallbackAddressTaggedField.FromBitReader(
 035                bitReader, length, bitcoinNetwork),
 036            TaggedFieldTypes.Description => DescriptionTaggedField.FromBitReader(bitReader, length),
 037            TaggedFieldTypes.PaymentSecret => PaymentSecretTaggedField.FromBitReader(bitReader, length),
 038            TaggedFieldTypes.PayeePubKey => PayeePubKeyTaggedField.FromBitReader(bitReader, length),
 039            TaggedFieldTypes.DescriptionHash => DescriptionHashTaggedField.FromBitReader(bitReader, length),
 040            TaggedFieldTypes.MinFinalCltvExpiry => MinFinalCltvExpiryTaggedField.FromBitReader(bitReader, length),
 041            TaggedFieldTypes.Metadata => MetadataTaggedField.FromBitReader(bitReader, length),
 042            // Add more cases as needed for other types
 043            _ => throw new ArgumentException($"Unknown tagged field type: {type}", nameof(type))
 044        };
 45    }
 46}