Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / Microsoft / Internal / AssumesTests.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.ComponentModel.Composition;\r
6 using System.Collections.Generic;\r
7 using System.UnitTesting;\r
8 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
9 \r
10 #if !SILVERLIGHT\r
11 using System.Runtime.Serialization;\r
12 #endif\r
13 \r
14 namespace Microsoft.Internal\r
15 {\r
16     [TestClass]\r
17     public class AssumesTests\r
18     {\r
19         [TestMethod]\r
20         public void NotNullOfT_NullAsValueArgument_ShouldThrowInternalErrorException()\r
21         {\r
22             Throws(() =>\r
23             {\r
24                 Assumes.NotNull<string>((string)null);\r
25             });\r
26         }\r
27 \r
28         [TestMethod]\r
29         public void NotNullOfT1T2_NullAsValue1Argument_ShouldThrowInternalErrorException()\r
30         {\r
31             Throws(() =>\r
32             {\r
33                 Assumes.NotNull<string, string>((string)null, "Value");\r
34             });\r
35         }\r
36 \r
37         [TestMethod]\r
38         public void NotNullOfT1T2_NullAsValue2Argument_ShouldThrowInternalErrorException()\r
39         {\r
40             Throws(() =>\r
41             {\r
42                 Assumes.NotNull<string, string>("Value", (string)null);\r
43             });\r
44         }\r
45 \r
46         [TestMethod]\r
47         public void NotNullOfT1T2_NullAsValue1ArgumentAndValue2Argument_ShouldThrowInternalErrorException()\r
48         {\r
49             Throws(() =>\r
50             {\r
51                 Assumes.NotNull<string, string>((string)null, (string)null);\r
52             });\r
53         }\r
54 \r
55         [TestMethod]\r
56         public void NotNullOfT1T2T3_NullAsValue1Argument_ShouldThrowInternalErrorException()\r
57         {\r
58             Throws(() =>\r
59             {\r
60                 Assumes.NotNull<string, string, string>((string)null, "Value", "Value");\r
61             });\r
62         }\r
63 \r
64         [TestMethod]\r
65         public void NotNullOfT1T2T3_NullAsValue2Argument_ShouldThrowInternalErrorException()\r
66         {\r
67             Throws(() =>\r
68             {\r
69                 Assumes.NotNull<string, string, string>("Value", (string)null, "Value");\r
70             });\r
71         }\r
72 \r
73         [TestMethod]\r
74         public void NotNullOfT1T2T3_NullAsValue3Argument_ShouldThrowInternalErrorException()\r
75         {\r
76             Throws(() =>\r
77             {\r
78                 Assumes.NotNull<string, string, string>("Value", "Value", (string)null);\r
79             });\r
80         }\r
81 \r
82         [TestMethod]\r
83         public void NotNullOfT1T2T3_NullAsValue1ArgumentAndValue2Argument_ShouldThrowInternalErrorException()\r
84         {\r
85             Throws(() =>\r
86             {\r
87                 Assumes.NotNull<string, string, string>((string)null, (string)null, "Value");\r
88             });\r
89         }\r
90 \r
91         [TestMethod]\r
92         public void NotNullOfT1T2T3_NullAsValue1ArgumentAnd3_ShouldThrowInternalErrorException()\r
93         {\r
94             Throws(() =>\r
95             {\r
96                 Assumes.NotNull<string, string, string>((string)null, "Value", (string)null);\r
97             });\r
98         }\r
99 \r
100         [TestMethod]\r
101         public void NotNullOfT1T2T3_NullAsValue2ArgumentAndValue3Argument_ShouldThrowInternalErrorException()\r
102         {\r
103             Throws(() =>\r
104             {\r
105                 Assumes.NotNull<string, string, string>("Value", (string)null, (string)null);\r
106             });\r
107         }\r
108 \r
109         [TestMethod]\r
110         public void NotNullOfT_ValueAsValueArgument_ShouldNotThrow()\r
111         {\r
112             Assumes.NotNull<string>("Value");\r
113         }\r
114 \r
115         [TestMethod]\r
116         public void NotNullOfT1T2_ValueAsValue1ArgumentAndValue2Argument_ShouldNotThrow()\r
117         {\r
118             Assumes.NotNull<string, string>("Value", "Value");\r
119         }\r
120 \r
121         [TestMethod]\r
122         public void NotNullOfT1T2T3_ValueAsValue1ArgumentAndValue2ArgumentAndValue3Argument_ShouldNotThrow()\r
123         {\r
124             Assumes.NotNull<string, string, string>("Value", "Value", "Value");\r
125         }\r
126 \r
127         [TestMethod]\r
128         public void NullOfT_NullAsValueArgument_ShouldNotThrow()\r
129         {\r
130             Assumes.Null<string>((string)null);\r
131         }\r
132 \r
133         [TestMethod]\r
134         public void NullOfT_ValueAsValueArgument_ShouldThrowInternalErrorException()\r
135         {\r
136             Throws(() =>\r
137             {\r
138                 Assumes.Null<string>("Value");\r
139             });\r
140         }\r
141 \r
142         [TestMethod]\r
143         public void NotNullOrEmpty_NullAsValueArgument_ShouldThrowInternalErrorException()\r
144         {\r
145             Throws(() =>\r
146             {\r
147                 Assumes.NotNullOrEmpty((string)null);\r
148             });\r
149         }\r
150 \r
151         [TestMethod]\r
152         public void NotNullOrEmpty_EmptyAsValueArgument_ShouldThrowInternalErrorException()\r
153         {\r
154             Throws(() =>\r
155             {\r
156                 Assumes.NotNullOrEmpty("");\r
157             });\r
158         }\r
159 \r
160         [TestMethod]\r
161         public void NotNullOrEmpty_ValueAsValueArgument_ShouldNotThrow()\r
162         {\r
163             var expectations = new List<string>();\r
164             expectations.Add(" ");\r
165             expectations.Add("  ");\r
166             expectations.Add("   ");\r
167             expectations.Add("Value");\r
168 \r
169             foreach (var e in expectations)\r
170             {\r
171                 Assumes.NotNullOrEmpty(e);\r
172             }\r
173         }\r
174 \r
175         [TestMethod]\r
176         public void IsTrue1_FalseAsConditionArgument_ShouldThrowInternalErrorException()\r
177         {\r
178             Throws(() =>\r
179             {\r
180                 Assumes.IsTrue(false);\r
181             });\r
182         }\r
183 \r
184         [TestMethod]\r
185         public void IsTrue2_FalseAsConditionArgument_ShouldThrowInternalErrorException()\r
186         {\r
187             Throws(() =>\r
188             {\r
189                 Assumes.IsTrue(false, "Message");\r
190             });\r
191         }\r
192 \r
193         [TestMethod]\r
194         public void IsTrue1_TrueAsConditionArgument_ShouldNotThrow()\r
195         {\r
196             Assumes.IsTrue(true);\r
197         }\r
198 \r
199         [TestMethod]\r
200         public void IsTrue2_TrueAsConditionArgument_ShouldNotThrow()\r
201         {\r
202             Assumes.IsTrue(true, "Message");\r
203         }\r
204 \r
205         [TestMethod]\r
206         public void IsFalse1_TrueAsConditionArgument_ShouldThrowInternalErrorException()\r
207         {\r
208             Throws(() =>\r
209             {\r
210                 Assumes.IsFalse(true);\r
211             });\r
212         }\r
213 \r
214         [TestMethod]\r
215         public void IsFalse1_FalseAsConditionArgument_ShouldNotThrow()\r
216         {\r
217             Assumes.IsFalse(false);\r
218         }\r
219 \r
220         [TestMethod]\r
221         public void NotReachable_ShouldAlwaysThrow()\r
222         {\r
223             Throws(() =>\r
224             {\r
225                 Assumes.NotReachable<object>();\r
226             });\r
227         }\r
228 \r
229         [TestMethod]\r
230         public void Fail_ShouldThrowInternalErrorException()\r
231         {\r
232             var expectations = Expectations.GetExceptionMessages();\r
233             \r
234             foreach (var e in expectations)\r
235             {\r
236                 Throws(() =>\r
237                 {\r
238                     Assumes.Fail(e);\r
239                 });\r
240             }\r
241         }\r
242 \r
243         private static void Throws(Action action)\r
244         {\r
245             try\r
246             {\r
247                 action();\r
248                 Assert.Fail();\r
249             }\r
250             catch (Exception ex)\r
251             {\r
252                 Type exceptionType = ex.GetType();\r
253 \r
254                 // The exception should not be a \r
255                 // publicily catchable exception\r
256                 Assert.IsFalse(exceptionType.IsVisible);\r
257             }\r
258         }\r
259 \r
260 #if !SILVERLIGHT\r
261 \r
262         [TestMethod]\r
263         public void Message_CanBeSerialized()\r
264         {\r
265             var expectations = Expectations.GetExceptionMessages();\r
266 \r
267             foreach (var e in expectations)\r
268             {\r
269                 var exception = CreateInternalErrorException(e);\r
270 \r
271                 var result = SerializationTestServices.RoundTrip(exception);\r
272 \r
273                 Assert.AreEqual(exception.Message, result.Message);\r
274             }\r
275         }\r
276 \r
277 #endif\r
278 \r
279         private static Exception CreateInternalErrorException()\r
280         {\r
281             return CreateInternalErrorException((string)null);\r
282         }\r
283 \r
284         private static Exception CreateInternalErrorException(string message)\r
285         {\r
286             Exception exception = null;\r
287 \r
288             try\r
289             {\r
290                 Assumes.Fail(message);\r
291             }\r
292             catch (Exception ex)\r
293             {\r
294                 exception = ex;\r
295             }\r
296 \r
297             Assert.IsNotNull(exception);\r
298             return exception;\r
299         }\r
300     }\r
301 }\r