public void TestConstructorWrapsKeyValuePairs() { var pairs = new List <KeyValuePair <int, bool> > { new KeyValuePair <int, bool>(0, true), new KeyValuePair <int, bool>(1, false), new KeyValuePair <int, bool>(2, true), new KeyValuePair <int, bool>(3, false) }; var toTest = new ReadOnlyDictionary <int, bool>(pairs); Assert.IsTrue(toTest.IsReadOnly); Assert.AreEqual(4, toTest.Count); Assert.IsTrue(toTest.ContainsKey(0)); Assert.IsTrue(toTest.ContainsKey(1)); Assert.IsTrue(toTest.ContainsKey(2)); Assert.IsTrue(toTest.ContainsKey(3)); Assert.AreEqual(true, toTest[0]); Assert.AreEqual(false, toTest[1]); Assert.AreEqual(true, toTest[2]); Assert.AreEqual(false, toTest[3]); Assert.IsTrue(pairs.OrderBy(kv => kv.Key).SequenceEqual(toTest.OrderBy(kv => kv.Key))); Assert.IsTrue(pairs.Select(kv => kv.Key).OrderBy(k => k).SequenceEqual(toTest.Keys.OrderBy(k => k))); Assert.IsTrue(pairs.Select(kv => kv.Value).OrderBy(v => v).SequenceEqual(toTest.Values.OrderBy(v => v))); }
public void TestConstructorWrapsDictionary() { var dict = new Dictionary <int, string>() { { 1, "One" }, { 2, "Two" }, { 3, "Three" } }; var toTest = new ReadOnlyDictionary <int, string>(dict); Assert.IsTrue(toTest.IsReadOnly); Assert.AreEqual(3, toTest.Count); Assert.IsTrue(toTest.ContainsKey(1)); Assert.IsTrue(toTest.ContainsKey(2)); Assert.IsTrue(toTest.ContainsKey(3)); Assert.AreEqual("One", toTest[1]); Assert.AreEqual("Two", toTest[2]); Assert.AreEqual("Three", toTest[3]); Assert.IsTrue(dict.OrderBy(kv => kv.Key).SequenceEqual(toTest.OrderBy(kv => kv.Key))); Assert.IsTrue(dict.Keys.OrderBy(k => k).SequenceEqual(toTest.Keys.OrderBy(k => k))); Assert.IsTrue(dict.Values.OrderBy(v => v).SequenceEqual(toTest.Values.OrderBy(v => v))); }
public static IEnumerable <KeyValuePair <int, T> > CreateSortedDictionary <T>( ReadOnlyDictionary <int, T> unsortedDic) { return(unsortedDic.OrderBy <KeyValuePair <int, T>, int>((Func <KeyValuePair <int, T>, int>)(pair => pair.Key)).Take <KeyValuePair <int, T> >(unsortedDic.Count)); }