< Summary

Class:Itinero.Indexes.AttributeSetEqualityComparer
Assembly:Itinero
File(s):/home/runner/work/routing2/routing2/src/Itinero/Indexes/AttributeSetEqualityComparer.cs
Covered lines:19
Uncovered lines:4
Coverable lines:23
Total lines:53
Line coverage:82.6% (19 of 23)
Covered branches:7
Total branches:10
Branch coverage:70% (7 of 10)
Tag:263_26948838820

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.cctor()100%1100%
Equals(...)62.5%871.42%
GetHashCode(...)100%2100%

File(s)

/home/runner/work/routing2/routing2/src/Itinero/Indexes/AttributeSetEqualityComparer.cs

#LineLine coverage
 1using System.Collections.Generic;
 2
 3namespace Itinero.Indexes;
 4
 5/// <summary>
 6/// An equality comparer to compare attribute sets.
 7/// </summary>
 8/// <remarks>
 9/// - Doesn't care about the order of attributes.
 10/// </remarks>
 11public class AttributeSetEqualityComparer : IEqualityComparer<IReadOnlyList<(string key, string value)>>
 12{
 13    /// <summary>
 14    /// The default comparer.
 15    /// </summary>
 116    public static readonly AttributeSetEqualityComparer Default = new();
 17
 18    /// <inheritdoc/>
 19    public bool Equals(IReadOnlyList<(string key, string value)> x,
 20        IReadOnlyList<(string key, string value)> y)
 4454021    {
 4454022        if (x.Count != y.Count)
 023        {
 024            return false;
 25        }
 26
 43315627        for (var i = 0; i < x.Count; i++)
 17203828        {
 17203829            var xPair = x[i];
 17203830            var yPair = y[i];
 31
 17203832            if (xPair != yPair)
 033            {
 034                return false;
 35            }
 17203836        }
 37
 4454038        return true;
 4454039    }
 40
 41    /// <inheritdoc/>
 42    public int GetHashCode(IReadOnlyList<(string key, string value)> obj)
 6646643    {
 6646644        var hash = obj.Count.GetHashCode();
 45
 79530246        foreach (var pair in obj)
 29795247        {
 29795248            hash ^= pair.GetHashCode();
 29795249        }
 50
 6646651        return hash;
 6646652    }
 53}