< Summary - MechanicsSoftware — Coverage Report

Information
Class: MechanicsSoftware.Domain.ValueObjects.ValueObject
Assembly: MechanicsSoftware.Domain
File(s): /home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Domain/ValueObjects/ValueObject.cs
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 23
Line coverage: 100%
Branch coverage
50%
Covered branches: 3
Total branches: 6
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Equals(...)50%44100%
GetHashCode()100%11100%
op_Equality(...)50%22100%
op_Inequality(...)100%11100%

File(s)

/home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Domain/ValueObjects/ValueObject.cs

#LineLine coverage
 1namespace MechanicsSoftware.Domain.ValueObjects;
 2
 3public abstract class ValueObject
 4{
 5    protected abstract IEnumerable<object?> GetEqualityComponents();
 6
 7    public override bool Equals(object? obj)
 2128    {
 2129        if (obj is null || obj.GetType() != GetType()) return false;
 21210        return ((ValueObject)obj).GetEqualityComponents()
 21211            .SequenceEqual(GetEqualityComponents());
 21212    }
 13
 14    public override int GetHashCode() =>
 1215        GetEqualityComponents()
 1216            .Aggregate(0, (hash, component) => HashCode.Combine(hash, component));
 17
 18    public static bool operator ==(ValueObject? left, ValueObject? right) => // NOSONAR — intentional value equality for
 3419        left?.Equals(right) ?? right is null;
 20
 21    public static bool operator !=(ValueObject? left, ValueObject? right) =>
 1022        !(left == right);
 23}