< Summary - Combined Code Coverage

Information
Class: NLightning.Infrastructure.Transport.Handshake.MessagePatterns.MessagePattern
Assembly: NLightning.Infrastructure
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure/Transport/Handshake/MessagePatterns/MessagePattern.cs
Tag: 30_15166811759
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 58
Line coverage: 100%
Branch coverage
84%
Covered branches: 11
Total branches: 13
Branch coverage: 84.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Tokens()100%11100%
Overhead(...)84.62%1313100%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure/Transport/Handshake/MessagePatterns/MessagePattern.cs

#LineLine coverage
 1using System.Diagnostics;
 2
 3namespace NLightning.Infrastructure.Transport.Handshake.MessagePatterns;
 4
 5using Domain.Crypto.Constants;
 6using Enums;
 7
 8/// <summary>
 9/// A message pattern is some sequence of tokens from
 10/// the set ("e", "s", "ee", "es", "se", "ss", "psk").
 11/// </summary>
 12internal sealed class MessagePattern
 13{
 1214    internal MessagePattern(params Token[] tokens)
 15    {
 16        Debug.Assert(tokens != null);
 17        Debug.Assert(tokens.Length > 0);
 18
 1219        Tokens = tokens;
 1220    }
 21
 22    /// <summary>
 23    /// Gets the tokens of the message pattern.
 24    /// </summary>
 42025    internal IEnumerable<Token> Tokens { get; }
 26
 27    /// <summary>
 28    /// Calculate the message overhead in bytes (i.e. the
 29    /// total size of all transmitted keys and AEAD tags).
 30    /// </summary>
 31    internal int Overhead(int dhLen, bool hasKey)
 32    {
 33        // Overhead always includes the Version length, which is 1 byte
 21634        var overhead = 1;
 35
 129636        foreach (var token in Tokens)
 37        {
 38            switch (token)
 39            {
 40                case Token.E:
 16841                    overhead += dhLen;
 16842                    break;
 43                case Token.S:
 4844                    overhead += hasKey ? dhLen + CryptoConstants.CHACHA20_POLY1305_TAG_LEN : dhLen;
 4845                    break;
 46                case Token.EE:
 47                case Token.SE:
 48                case Token.ES:
 49                case Token.SS:
 50                default:
 21651                    hasKey = true;
 52                    break;
 53            }
 54        }
 55
 21656        return hasKey ? overhead + CryptoConstants.CHACHA20_POLY1305_TAG_LEN : overhead;
 57    }
 58}