< Summary

Class:NanoCLang.Entities.HeapComparer
Assembly:NanoCLang
File(s):C:\GitLab-Runner\builds\JxAESPd8\0\chenmichael\nanoc\src\NanoCLang\HeapComparer.cs
Covered lines:2
Uncovered lines:8
Coverable lines:10
Total lines:26
Line coverage:20% (2 of 10)
Covered branches:1
Total branches:6
Branch coverage:16.6% (1 of 6)

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
get_Default()100%1100%
Equals(...)50%2100%
GetHashCode(...)0%40%

File(s)

C:\GitLab-Runner\builds\JxAESPd8\0\chenmichael\nanoc\src\NanoCLang\HeapComparer.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4
 5namespace NanoCLang.Entities {
 6    /// <summary>
 7    /// Provides a class for comparing two heap objects, or rather collections of location bindings.
 8    /// </summary>
 9    public class HeapComparer : IEqualityComparer<IDictionary<Location, BlockType[]>> {
 10        /// <summary>
 11        /// Provides the default instance of a heap comparer.
 12        /// </summary>
 7013        public static HeapComparer Default { get; } = new HeapComparer();
 14        /// <inheritdoc cref="IEqualityComparer{T}.Equals(T, T)"/>
 14215        public bool Equals(IDictionary<Location, BlockType[]> x, IDictionary<Location, BlockType[]> y) => x.Count == y.C
 16        /// <inheritdoc cref="IEqualityComparer{T}.GetHashCode(T)"/>
 017        public int GetHashCode(IDictionary<Location, BlockType[]> obj) {
 018            var hash = new HashCode();
 019            foreach (var item in obj) {
 020                hash.Add(item.Key);
 021                foreach (var block in item.Value) hash.Add(block);
 022            }
 023            return hash.ToHashCode();
 024        }
 25    }
 26}