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

DictionariesComparer

static class DictionariesComparer
Comparator for two IDictionarys.
using System.Collections; using System.Runtime.CompilerServices; namespace NUnit.Framework.Constraints.Comparers { internal static class DictionariesComparer { [NullableContext(1)] public static EqualMethodResult Equal(object x, object y, ref Tolerance tolerance, ComparisonState state, NUnitEqualityComparer equalityComparer) { IDictionary dictionary = x as IDictionary; if (dictionary != null) { IDictionary dictionary2 = y as IDictionary; if (dictionary2 != null) { if (dictionary.Count != dictionary2.Count) return EqualMethodResult.ComparedNotEqual; CollectionTally collectionTally = new CollectionTally(equalityComparer, dictionary.Keys); collectionTally.TryRemove(dictionary2.Keys); if (collectionTally.Result.MissingItems.Count > 0 || collectionTally.Result.ExtraItems.Count > 0) return EqualMethodResult.ComparedNotEqual; ComparisonState state2 = state.PushComparison(x, y); foreach (object key in dictionary.Keys) { EqualMethodResult equalMethodResult = equalityComparer.AreEqual(dictionary[key], dictionary2[key], ref tolerance, state2); if (equalMethodResult != EqualMethodResult.ComparedEqual) return equalMethodResult; } return EqualMethodResult.ComparedEqual; } } return EqualMethodResult.TypesNotSupported; } } }