< Summary - Combined Code Coverage

Information
Class: NLightning.Infrastructure.Protocol.Tlv.Converters.FeeRangeTlvConverter
Assembly: NLightning.Infrastructure
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure/Protocol/Tlv/Converters/FeeRangeTlvConverter.cs
Tag: 30_15166811759
Line coverage
84%
Covered lines: 11
Uncovered lines: 2
Coverable lines: 13
Total lines: 55
Line coverage: 84.6%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ConvertToBase(...)100%11100%
ConvertFromBase(...)50%4.18477.78%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure/Protocol/Tlv/Converters/FeeRangeTlvConverter.cs

#LineLine coverage
 1using System.Diagnostics.CodeAnalysis;
 2
 3namespace NLightning.Infrastructure.Protocol.Tlv.Converters;
 4
 5using Domain.Enums;
 6using Domain.Money;
 7using Domain.Protocol.Constants;
 8using Domain.Protocol.Tlv;
 9using Domain.Protocol.Tlv.Converters;
 10using Infrastructure.Converters;
 11
 12public class FeeRangeTlvConverter : ITlvConverter<FeeRangeTlv>
 13{
 14    public BaseTlv ConvertToBase(FeeRangeTlv tlv)
 15    {
 816        var tlvValue = new byte[sizeof(ulong) * 2];
 817        EndianBitConverter.GetBytesBigEndian(tlv.MinFeeAmount.Satoshi).CopyTo(tlvValue, 0);
 818        EndianBitConverter.GetBytesBigEndian(tlv.MaxFeeAmount.Satoshi).CopyTo(tlvValue, sizeof(ulong));
 19
 820        return new BaseTlv(tlv.Type, tlvValue);
 21    }
 22
 23    public FeeRangeTlv ConvertFromBase(BaseTlv baseTlv)
 24    {
 825        if (baseTlv.Type != TlvConstants.FEE_RANGE)
 26        {
 027            throw new InvalidCastException("Invalid TLV type");
 28        }
 29
 830        if (baseTlv.Length != sizeof(ulong) * 2) // 2 long (128 bits) is 16 bytes
 31        {
 032            throw new InvalidCastException("Invalid length");
 33        }
 34
 835        var minFeeAmount = LightningMoney
 836            .FromUnit(EndianBitConverter.ToUInt64BigEndian(baseTlv.Value[..sizeof(ulong)]), LightningMoneyUnit.Satoshi);
 837        var maxFeeAmount = LightningMoney
 838            .FromUnit(EndianBitConverter.ToUInt64BigEndian(baseTlv.Value[sizeof(ulong)..]), LightningMoneyUnit.Satoshi);
 39
 840        return new FeeRangeTlv(minFeeAmount, maxFeeAmount);
 41    }
 42
 43    [ExcludeFromCodeCoverage]
 44    BaseTlv ITlvConverter.ConvertFromBase(BaseTlv tlv)
 45    {
 46        return ConvertFromBase(tlv);
 47    }
 48
 49    [ExcludeFromCodeCoverage]
 50    BaseTlv ITlvConverter.ConvertToBase(BaseTlv tlv)
 51    {
 52        return ConvertToBase(tlv as FeeRangeTlv
 53                             ?? throw new InvalidCastException($"Error converting BaseTlv to {nameof(FeeRangeTlv)}"));
 54    }
 55}