<PackageReference Include="NUnit" Version="3.10.0" />

DictionariesComparer

Comparator for two IDictionarys.
using System.Collections; namespace NUnit.Framework.Constraints.Comparers { internal class DictionariesComparer : IChainComparer { private readonly NUnitEqualityComparer _equalityComparer; internal DictionariesComparer(NUnitEqualityComparer equalityComparer) { _equalityComparer = equalityComparer; } public bool? Equal(object x, object y, ref Tolerance tolerance, bool topLevelComparison = true) { if (!(x is IDictionary) || !(y is IDictionary)) return null; IDictionary dictionary = (IDictionary)x; IDictionary dictionary2 = (IDictionary)y; if (dictionary.Count != dictionary2.Count) return false; CollectionTally collectionTally = new CollectionTally(_equalityComparer, dictionary.Keys); collectionTally.TryRemove(dictionary2.Keys); if (collectionTally.Result.MissingItems.Count > 0 || collectionTally.Result.ExtraItems.Count > 0) return false; foreach (object key in dictionary.Keys) { if (!_equalityComparer.AreEqual(dictionary[key], dictionary2[key], ref tolerance, false)) return false; } return true; } } }