< Summary - Combined Code Coverage

Information
Class: NLightning.Infrastructure.Serialization.Messages.Types.ClosingSignedMessageTypeSerializer
Assembly: NLightning.Infrastructure.Serialization
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Messages/Types/ClosingSignedMessageTypeSerializer.cs
Tag: 30_15166811759
Line coverage
84%
Covered lines: 28
Uncovered lines: 5
Coverable lines: 33
Total lines: 85
Line coverage: 84.8%
Branch coverage
50%
Covered branches: 8
Total branches: 16
Branch coverage: 50%
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()50%4.05485.71%
DeserializeAsync()50%12.231288.24%
NLightning-Domain-Serialization-Messages-Types-IMessageTypeSerializer-DeserializeAsync()100%210%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Messages/Types/ClosingSignedMessageTypeSerializer.cs

#LineLine coverage
 1using System.Runtime.Serialization;
 2
 3namespace NLightning.Infrastructure.Serialization.Messages.Types;
 4
 5using Domain.Protocol.Constants;
 6using Domain.Protocol.Factories;
 7using Domain.Protocol.Messages;
 8using Domain.Protocol.Messages.Interfaces;
 9using Domain.Protocol.Payloads;
 10using Domain.Protocol.Tlv;
 11using Domain.Serialization.Factories;
 12using Domain.Serialization.Messages.Types;
 13using Exceptions;
 14using Interfaces;
 15
 16public class ClosingSignedMessageTypeSerializer : IMessageTypeSerializer<ClosingSignedMessage>
 17{
 18    private readonly IPayloadSerializerFactory _payloadSerializerFactory;
 19    private readonly ITlvConverterFactory _tlvConverterFactory;
 20    private readonly ITlvStreamSerializer _tlvStreamSerializer;
 21
 1222    public ClosingSignedMessageTypeSerializer(IPayloadSerializerFactory payloadSerializerFactory,
 1223                                              ITlvConverterFactory tlvConverterFactory,
 1224                                              ITlvStreamSerializer tlvStreamSerializer)
 25    {
 1226        _payloadSerializerFactory = payloadSerializerFactory;
 1227        _tlvConverterFactory = tlvConverterFactory;
 1228        _tlvStreamSerializer = tlvStreamSerializer;
 1229    }
 30
 31    public async Task SerializeAsync(IMessage message, Stream stream)
 32    {
 433        if (message is not ClosingSignedMessage closingSignedMessage)
 034            throw new SerializationException("Message is not of type ClosingSignedMessage");
 35
 36        // Get the payload serializer
 437        var payloadTypeSerializer = _payloadSerializerFactory.GetSerializer(message.Type)
 438                                    ?? throw new SerializationException("No serializer found for payload type");
 439        await payloadTypeSerializer.SerializeAsync(message.Payload, stream);
 40
 41        // Serialize the TLV stream
 442        await _tlvStreamSerializer.SerializeAsync(closingSignedMessage.Extension, stream);
 443    }
 44
 45    /// <summary>
 46    /// Deserialize a ClosingSignedMessage from a stream.
 47    /// </summary>
 48    /// <param name="stream">The stream to deserialize from.</param>
 49    /// <returns>The deserialized AcceptChannel2Message.</returns>
 50    /// <exception cref="MessageSerializationException">Error deserializing ClosingSignedMessage</exception>
 51    public async Task<ClosingSignedMessage> DeserializeAsync(Stream stream)
 52    {
 53        try
 54        {
 55            // Deserialize payload
 856            var payloadSerializer = _payloadSerializerFactory.GetSerializer<ClosingSignedPayload>()
 857                                    ?? throw new SerializationException("No serializer found for payload type");
 858            var payload = await payloadSerializer.DeserializeAsync(stream)
 859                          ?? throw new SerializationException("Error serializing payload");
 60
 61            // Deserialize extension
 862            if (stream.Position >= stream.Length)
 063                throw new SerializationException("Required extension is missing");
 64
 865            var extension = await _tlvStreamSerializer.DeserializeAsync(stream);
 466            if (extension is null || !extension.TryGetTlv(TlvConstants.FEE_RANGE, out var baseFeeRangeTlv))
 067                throw new SerializationException("Required extension is missing");
 68
 469            var tlvConverter = _tlvConverterFactory.GetConverter<FeeRangeTlv>()
 470                               ?? throw new SerializationException(
 471                                   $"No serializer found for tlv type {nameof(FeeRangeTlv)}");
 472            var feeRangeTlv = tlvConverter.ConvertFromBase(baseFeeRangeTlv!);
 73
 474            return new ClosingSignedMessage(payload, feeRangeTlv);
 75        }
 476        catch (SerializationException e)
 77        {
 478            throw new MessageSerializationException("Error deserializing ClosingSignedMessage", e);
 79        }
 480    }
 81    async Task<IMessage> IMessageTypeSerializer.DeserializeAsync(Stream stream)
 82    {
 083        return await DeserializeAsync(stream);
 084    }
 85}