Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / Microsoft / Internal / Collections / ReadOnlyDictionaryDebuggerProxyTests.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.Collections.Generic;\r
6 using System.ComponentModel.Composition;\r
7 using System.UnitTesting;\r
8 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
9 \r
10 namespace Microsoft.Internal.Collections\r
11 {\r
12     [TestClass]\r
13     public class ReadOnlyDictionaryDebuggerProxyTests\r
14     {\r
15         [TestMethod]\r
16         public void Constructor_NullAsDictionaryArgument_ShouldThrowArgumentNull()\r
17         {\r
18             ExceptionAssert.ThrowsArgument<ArgumentNullException>("dictionary", () =>\r
19             {\r
20                 new ReadOnlyDictionaryDebuggerProxy<string, object>((ReadOnlyDictionary<string, object>)null);\r
21             });\r
22         }\r
23 \r
24         [TestMethod]\r
25         public void Constructor_EmptyDictionaryAsDictionaryArgument_ShouldSetItemsPropertyToEmptyEnumerable()\r
26         {\r
27             var dictionary = CreateReadOnlyDictionary<string, object>();\r
28 \r
29             var proxy = new ReadOnlyDictionaryDebuggerProxy<string, object>(dictionary);\r
30 \r
31             EnumerableAssert.IsEmpty(proxy.Items);\r
32         }\r
33 \r
34         [TestMethod]\r
35         public void Constructor_ValueAsDictionaryArgument_ShouldSetItemsProperty()\r
36         {\r
37             var expectations = Expectations.GetMetadata();\r
38 \r
39             foreach (var e in expectations)\r
40             {\r
41                 var proxy = new ReadOnlyDictionaryDebuggerProxy<string, object>(CreateReadOnlyDictionary(e));\r
42 \r
43                 EnumerableAssert.AreEqual(e, proxy.Items);\r
44             }\r
45         }\r
46 \r
47         [TestMethod]\r
48         public void Items_ShouldNotCacheUnderlyingItems()\r
49         {\r
50             var dictionary = new Dictionary<string, object>();\r
51             dictionary.Add("Name", "Value");\r
52 \r
53             var proxy = new ReadOnlyDictionaryDebuggerProxy<string, object>(CreateReadOnlyDictionary(dictionary));\r
54 \r
55             EnumerableAssert.AreEqual(dictionary, proxy.Items);\r
56 \r
57             dictionary.Add("AnotherName", "Value");\r
58 \r
59             EnumerableAssert.AreEqual(dictionary, proxy.Items);\r
60 \r
61             dictionary.Add("AndAnotherName", "Value");\r
62 \r
63             EnumerableAssert.AreEqual(dictionary, proxy.Items);\r
64         }\r
65 \r
66         private static ReadOnlyDictionary<TKey, TValue> CreateReadOnlyDictionary<TKey, TValue>()\r
67         {\r
68             return CreateReadOnlyDictionary<TKey, TValue>(null);\r
69         }\r
70 \r
71         private static ReadOnlyDictionary<TKey, TValue> CreateReadOnlyDictionary<TKey, TValue>(IDictionary<TKey, TValue> dictionary)\r
72         {\r
73             return new ReadOnlyDictionary<TKey, TValue>(dictionary);\r
74         }\r
75     }\r
76 }