From 2ab3b22c604f5da77f376f54c84197ec781f021c Mon Sep 17 00:00:00 2001 From: Markus Ewald Date: Tue, 13 Jan 2009 20:00:13 +0000 Subject: [PATCH] Fixed failing unit tests on Mono; used CollectionAssert.AreEquivalent() instead of CollectionAssert.AreEqual() since the order of items in a Dictionary is unspecified and Mono makes use of this allowance; fixed one serious bug that should have been caught by the .NET 2.0 unit tests: the enumeration of ReadOnlyDictionary via ICollection should return DictionaryEntry[] and not KeyValuePair<>[] git-svn-id: file:///srv/devel/repo-conversion/nusu@115 d2e56fa2-650e-0410-a79f-9358c0239efd --- Source/Collections/ReadOnlyDictionary.Test.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Source/Collections/ReadOnlyDictionary.Test.cs b/Source/Collections/ReadOnlyDictionary.Test.cs index 81fd62b..befbf2e 100644 --- a/Source/Collections/ReadOnlyDictionary.Test.cs +++ b/Source/Collections/ReadOnlyDictionary.Test.cs @@ -281,7 +281,7 @@ namespace Nuclex.Support.Collections { (outputNumbers as IDictionary).Add(entry.Key, entry.Value); } - CollectionAssert.AreEqual(numbers, outputNumbers); + CollectionAssert.AreEquivalent(numbers, outputNumbers); } /// @@ -409,9 +409,16 @@ namespace Nuclex.Support.Collections { Dictionary numbers = createTestDictionary(); ReadOnlyDictionary testDictionary = makeReadOnly(numbers); + DictionaryEntry[] entries = new DictionaryEntry[numbers.Count]; + (testDictionary as ICollection).CopyTo(entries, 0); + KeyValuePair[] items = new KeyValuePair[numbers.Count]; - (testDictionary as ICollection).CopyTo(items, 0); - CollectionAssert.AreEqual(numbers, items); + for(int index = 0; index < entries.Length; ++index) { + items[index] = new KeyValuePair( + (int)entries[index].Key, (string)entries[index].Value + ); + } + CollectionAssert.AreEquivalent(numbers, items); } /// @@ -444,7 +451,7 @@ namespace Nuclex.Support.Collections { memory.Position = 0; object testDictionary2 = formatter.Deserialize(memory); - CollectionAssert.AreEqual(testDictionary1, (IEnumerable)testDictionary2); + CollectionAssert.AreEquivalent(testDictionary1, (IEnumerable)testDictionary2); } }