< Summary - Combined Code Coverage

Information
Class: NLightning.Infrastructure.Serialization.Tlv.TlvStreamSerializer
Assembly: NLightning.Infrastructure.Serialization
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Tlv/TlvStreamSerializer.cs
Tag: 30_15166811759
Line coverage
97%
Covered lines: 41
Uncovered lines: 1
Coverable lines: 42
Total lines: 78
Line coverage: 97.6%
Branch coverage
77%
Covered branches: 37
Total branches: 48
Branch coverage: 77%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
SerializeAsync()73.81%42.094296.3%
DeserializeAsync()100%66100%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Tlv/TlvStreamSerializer.cs

#LineLine coverage
 1using System.Runtime.Serialization;
 2
 3namespace NLightning.Infrastructure.Serialization.Tlv;
 4
 5using Domain.Protocol.Factories;
 6using Domain.Protocol.Models;
 7using Domain.Protocol.Tlv;
 8using Domain.Serialization.Tlv;
 9using Interfaces;
 10
 11public class TlvStreamSerializer : ITlvStreamSerializer
 12{
 13    private readonly ITlvSerializer _tlvSerializer;
 14    private readonly ITlvConverterFactory _tlvConverterFactory;
 15
 1616    public TlvStreamSerializer(ITlvConverterFactory tlvConverterFactory, ITlvSerializer tlvSerializer)
 17    {
 1618        _tlvConverterFactory = tlvConverterFactory;
 1619        _tlvSerializer = tlvSerializer;
 1620    }
 21
 22    public async Task SerializeAsync(TlvStream? tlvStream, Stream stream)
 23    {
 7624        if (tlvStream is null)
 3625            return;
 26
 21627        foreach (var tlv in tlvStream.GetTlvs())
 28        {
 6829            var baseTlv = tlv switch
 6830            {
 431                BlindedPathTlv blindedPathTlv => _tlvConverterFactory
 432                    .GetConverter<BlindedPathTlv>()?.ConvertToBase(blindedPathTlv),
 833                ChannelTypeTlv channelTypeTlv => _tlvConverterFactory
 834                    .GetConverter<ChannelTypeTlv>()?.ConvertToBase(channelTypeTlv),
 435                FeeRangeTlv feeRangeTlv => _tlvConverterFactory
 436                    .GetConverter<FeeRangeTlv>()?.ConvertToBase(feeRangeTlv),
 1237                FundingOutputContributionTlv fundingOutputContributionTlv => _tlvConverterFactory
 1238                    .GetConverter<FundingOutputContributionTlv>()?.ConvertToBase(fundingOutputContributionTlv),
 439                NetworksTlv networksTlv => _tlvConverterFactory
 440                    .GetConverter<NetworksTlv>()?.ConvertToBase(networksTlv),
 441                NextFundingTlv nextFundingTlv => _tlvConverterFactory
 442                    .GetConverter<NextFundingTlv>()?.ConvertToBase(nextFundingTlv),
 2043                RequireConfirmedInputsTlv requireConfirmedInputsTlv => _tlvConverterFactory
 2044                    .GetConverter<RequireConfirmedInputsTlv>()?.ConvertToBase(requireConfirmedInputsTlv),
 445                ShortChannelIdTlv shortChannelIdTlv => _tlvConverterFactory
 446                    .GetConverter<ShortChannelIdTlv>()?.ConvertToBase(shortChannelIdTlv),
 847                UpfrontShutdownScriptTlv upfrontShutdownScriptTlv => _tlvConverterFactory
 848                    .GetConverter<UpfrontShutdownScriptTlv>()?.ConvertToBase(upfrontShutdownScriptTlv),
 049                _ => null
 6850            } ?? throw new SerializationException($"No converter found for tlv type {tlv.GetType().Name}");
 6851            await _tlvSerializer.SerializeAsync(baseTlv, stream);
 52        }
 7653    }
 54
 55    public async Task<TlvStream?> DeserializeAsync(Stream stream)
 56    {
 8457        if (stream.Position == stream.Length)
 458            return null;
 59
 60        try
 61        {
 8062            var tlvStream = new TlvStream();
 63
 14864            while (stream.Position != stream.Length)
 65            {
 10866                var tlv = await _tlvSerializer.DeserializeAsync(stream);
 6867                if (tlv is not null)
 6868                    tlvStream.Add(tlv);
 69            }
 70
 4071            return tlvStream;
 72        }
 4073        catch (Exception e)
 74        {
 4075            throw new SerializationException("Error deserializing TLVStream", e);
 76        }
 4477    }
 78}