< Summary - Combined Code Coverage

Information
Class: NLightning.Domain.Protocol.ValueObjects.BitcoinNetwork
Assembly: NLightning.Domain
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Domain/Protocol/ValueObjects/BitcoinNetwork.cs
Tag: 36_15743069263
Line coverage
95%
Covered lines: 21
Uncovered lines: 1
Coverable lines: 22
Total lines: 66
Line coverage: 95.4%
Branch coverage
87%
Covered branches: 7
Total branches: 8
Branch coverage: 87.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
get_Name()100%11100%
.ctor(...)100%11100%
get_ChainHash()100%66100%
ToString()100%11100%
op_Implicit(...)100%11100%
op_Implicit(...)100%11100%
Equals(...)50%22100%
Equals(...)100%11100%
GetHashCode()100%210%
op_Equality(...)100%11100%
op_Inequality(...)100%11100%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Domain/Protocol/ValueObjects/BitcoinNetwork.cs

#LineLine coverage
 1namespace NLightning.Domain.Protocol.ValueObjects;
 2
 3using Constants;
 4
 5public readonly struct BitcoinNetwork : IEquatable<BitcoinNetwork>
 6{
 247    public static readonly BitcoinNetwork Mainnet = new(NetworkConstants.Mainnet);
 248    public static readonly BitcoinNetwork Testnet = new(NetworkConstants.Testnet);
 249    public static readonly BitcoinNetwork Regtest = new(NetworkConstants.Regtest);
 2410    public static readonly BitcoinNetwork Signet = new(NetworkConstants.Signet);
 11
 109212    public string Name { get; }
 13
 14    public BitcoinNetwork(string name)
 15    {
 48816        Name = name;
 48817    }
 18
 19    public ChainHash ChainHash
 20    {
 21        get
 22        {
 16823            return Name switch
 16824            {
 14825                NetworkConstants.Mainnet => ChainConstants.Main,
 1226                NetworkConstants.Testnet => ChainConstants.Testnet,
 427                NetworkConstants.Regtest => ChainConstants.Regtest,
 428                _ => throw new Exception("Chain not supported.")
 16829            };
 30        }
 31    }
 32
 433    public override string ToString() => Name;
 34
 35    #region Implicit Conversions
 22036    public static implicit operator string(BitcoinNetwork bitcoinNetwork) => bitcoinNetwork.Name.ToLowerInvariant();
 25637    public static implicit operator BitcoinNetwork(string value) => new(value.ToLowerInvariant());
 38    #endregion
 39
 40    #region Equality
 41    public override bool Equals(object? obj)
 42    {
 5643        return obj is BitcoinNetwork network && ChainHash.Equals(network.ChainHash);
 44    }
 45
 46    public bool Equals(BitcoinNetwork other)
 47    {
 2848        return Name == other.Name;
 49    }
 50
 51    public override int GetHashCode()
 52    {
 053        return Name.GetHashCode();
 54    }
 55
 56    public static bool operator ==(BitcoinNetwork left, BitcoinNetwork right)
 57    {
 19658        return left.Name == right.Name;
 59    }
 60
 61    public static bool operator !=(BitcoinNetwork left, BitcoinNetwork right)
 62    {
 6863        return !(left == right);
 64    }
 65    #endregion
 66}