< 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: 36_15743069263
Line coverage
97%
Covered lines: 47
Uncovered lines: 1
Coverable lines: 48
Total lines: 84
Line coverage: 97.9%
Branch coverage
76%
Covered branches: 38
Total branches: 50
Branch coverage: 76%
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.054296.97%
DeserializeAsync()87.5%88100%

File(s)

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

#LineLine coverage
 1using System.Runtime.Serialization;
 2using NLightning.Domain.Protocol.Interfaces;
 3using NLightning.Domain.Serialization.Interfaces;
 4
 5namespace NLightning.Infrastructure.Serialization.Tlv;
 6
 7using Domain.Protocol.Models;
 8using Domain.Protocol.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<
 1239                                                                                 FundingOutputContributionTlv>()
 1240                                                                           ?.ConvertToBase(
 1241                                                                                 fundingOutputContributionTlv),
 442                NetworksTlv networksTlv => _tlvConverterFactory
 443                                          .GetConverter<NetworksTlv>()?.ConvertToBase(networksTlv),
 444                NextFundingTlv nextFundingTlv => _tlvConverterFactory
 445                                                .GetConverter<NextFundingTlv>()?.ConvertToBase(nextFundingTlv),
 2046                RequireConfirmedInputsTlv requireConfirmedInputsTlv => _tlvConverterFactory
 2047                                                                      .GetConverter<RequireConfirmedInputsTlv>()
 2048                                                                     ?.ConvertToBase(requireConfirmedInputsTlv),
 449                ShortChannelIdTlv shortChannelIdTlv => _tlvConverterFactory
 450                                                      .GetConverter<ShortChannelIdTlv>()
 451                                                     ?.ConvertToBase(shortChannelIdTlv),
 852                UpfrontShutdownScriptTlv upfrontShutdownScriptTlv => _tlvConverterFactory
 853                                                                    .GetConverter<UpfrontShutdownScriptTlv>()
 854                                                                   ?.ConvertToBase(upfrontShutdownScriptTlv),
 055                _ => null
 6856            } ?? throw new SerializationException($"No converter found for tlv type {tlv.GetType().Name}");
 6857            await _tlvSerializer.SerializeAsync(baseTlv, stream);
 58        }
 7659    }
 60
 61    public async Task<TlvStream?> DeserializeAsync(Stream stream)
 62    {
 8463        if (stream.Position == stream.Length)
 464            return null;
 65
 66        try
 67        {
 8068            var tlvStream = new TlvStream();
 69
 14870            while (stream.Position != stream.Length)
 71            {
 10872                var tlv = await _tlvSerializer.DeserializeAsync(stream);
 6873                if (tlv is not null)
 6874                    tlvStream.Add(tlv);
 75            }
 76
 4077            return tlvStream.Any() ? tlvStream : null;
 78        }
 4079        catch (Exception e)
 80        {
 4081            throw new SerializationException("Error deserializing TLVStream", e);
 82        }
 4483    }
 84}