< 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: 36_15743069263
Line coverage
84%
Covered lines: 11
Uncovered lines: 2
Coverable lines: 13
Total lines: 51
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.Interfaces;
 9using Domain.Protocol.Tlv;
 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.FeeRange)
 026            throw new InvalidCastException("Invalid TLV type");
 27
 828        if (baseTlv.Length != sizeof(ulong) * 2) // 2 long (128 bits) is 16 bytes
 029            throw new InvalidCastException("Invalid length");
 30
 831        var minFeeAmount = LightningMoney
 832           .FromUnit(EndianBitConverter.ToUInt64BigEndian(baseTlv.Value[..sizeof(ulong)]), LightningMoneyUnit.Satoshi);
 833        var maxFeeAmount = LightningMoney
 834           .FromUnit(EndianBitConverter.ToUInt64BigEndian(baseTlv.Value[sizeof(ulong)..]), LightningMoneyUnit.Satoshi);
 35
 836        return new FeeRangeTlv(minFeeAmount, maxFeeAmount);
 37    }
 38
 39    [ExcludeFromCodeCoverage]
 40    BaseTlv ITlvConverter.ConvertFromBase(BaseTlv tlv)
 41    {
 42        return ConvertFromBase(tlv);
 43    }
 44
 45    [ExcludeFromCodeCoverage]
 46    BaseTlv ITlvConverter.ConvertToBase(BaseTlv tlv)
 47    {
 48        return ConvertToBase(tlv as FeeRangeTlv
 49                          ?? throw new InvalidCastException($"Error converting BaseTlv to {nameof(FeeRangeTlv)}"));
 50    }
 51}