Implement MachineKey.Protect and MachineKey.Unprotect
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / System / ComponentModel / Composition / CardinalityMismatchExceptionTests.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.UnitTesting;\r
6 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
7 \r
8 #if !SILVERLIGHT\r
9 using System.Runtime.Serialization;\r
10 #endif\r
11 \r
12 namespace System.ComponentModel.Composition\r
13 {\r
14     [TestClass]\r
15     public class CardinalityMismatchExceptionTests\r
16     {\r
17         [TestMethod]\r
18         public void Constructor1_ShouldSetMessagePropertyToDefault()\r
19         {\r
20             var exception = new ImportCardinalityMismatchException();\r
21 \r
22             ExceptionAssert.HasDefaultMessage(exception);\r
23         }\r
24 \r
25         [TestMethod]\r
26         public void Constructor2_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()\r
27         {\r
28             var exception = new ImportCardinalityMismatchException((string)null);\r
29 \r
30             ExceptionAssert.HasDefaultMessage(exception);\r
31         }\r
32 \r
33         [TestMethod]\r
34         public void Constructor3_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()\r
35         {\r
36             var exception = new ImportCardinalityMismatchException((string)null, new Exception());\r
37 \r
38             ExceptionAssert.HasDefaultMessage(exception);\r
39         }\r
40 \r
41         [TestMethod]\r
42         public void Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty()\r
43         {\r
44             var expectations = Expectations.GetExceptionMessages();\r
45 \r
46             foreach (var e in expectations)\r
47             {\r
48                 var exception = new ImportCardinalityMismatchException(e);\r
49 \r
50                 Assert.AreEqual(e, exception.Message);\r
51             }\r
52         }\r
53 \r
54         [TestMethod]\r
55         public void Constructor3_ValueAsMessageArgument_ShouldSetMessageProperty()\r
56         {\r
57             var expectations = Expectations.GetExceptionMessages();\r
58 \r
59             foreach (var e in expectations)\r
60             {\r
61                 var exception = new ImportCardinalityMismatchException(e, new Exception());\r
62 \r
63                 Assert.AreEqual(e, exception.Message);\r
64             }\r
65         }\r
66 \r
67         [TestMethod]\r
68         public void Constructor1_ShouldSetInnerExceptionPropertyToNull()\r
69         {\r
70             var exception = new ImportCardinalityMismatchException();\r
71 \r
72             Assert.IsNull(exception.InnerException);\r
73         }\r
74 \r
75         [TestMethod]\r
76         public void Constructor2_ShouldSetInnerExceptionPropertyToNull()\r
77         {\r
78             var exception = new ImportCardinalityMismatchException("Message");\r
79 \r
80             Assert.IsNull(exception.InnerException);\r
81         }\r
82 \r
83         [TestMethod]\r
84         public void Constructor3_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()\r
85         {\r
86             var exception = new ImportCardinalityMismatchException("Message", (Exception)null);\r
87 \r
88             Assert.IsNull(exception.InnerException);\r
89         }\r
90 \r
91         [TestMethod]\r
92         public void Constructor3_ValueAsInnerExceptionArgument_ShouldSetInnerExceptionProperty()\r
93         {\r
94             var expectations = Expectations.GetInnerExceptions();\r
95 \r
96             foreach (var e in expectations)\r
97             {\r
98                 var exception = new ImportCardinalityMismatchException("Message", e);\r
99 \r
100                 Assert.AreSame(e, exception.InnerException);\r
101             }\r
102         }\r
103 \r
104 #if !SILVERLIGHT\r
105 \r
106         [TestMethod]\r
107         public void Constructor4_NullAsInfoArgument_ShouldThrowArgumentNull()\r
108         {\r
109             var context = new StreamingContext();\r
110 \r
111             ExceptionAssert.ThrowsArgument<ArgumentNullException>("info", () =>\r
112             {\r
113                 SerializationTestServices.Create<ImportCardinalityMismatchException>((SerializationInfo)null, context);\r
114             });\r
115         }\r
116 \r
117         [TestMethod]\r
118         public void InnerException_CanBeSerialized()\r
119         {\r
120             var expectations = Expectations.GetInnerExceptionsWithNull();\r
121 \r
122             foreach (var e in expectations)\r
123             {\r
124                 var exception = CreateCardinalityMismatchException(e);\r
125 \r
126                 var result = SerializationTestServices.RoundTrip(exception);\r
127 \r
128                 ExtendedAssert.IsInstanceOfSameType(exception.InnerException, result.InnerException);\r
129             }\r
130         }\r
131 \r
132         [TestMethod]\r
133         public void Message_CanBeSerialized()\r
134         {\r
135             var expectations = Expectations.GetExceptionMessages();\r
136 \r
137             foreach (var e in expectations)\r
138             {\r
139                 var exception = CreateCardinalityMismatchException(e);\r
140 \r
141                 var result = SerializationTestServices.RoundTrip(exception);\r
142 \r
143                 Assert.AreEqual(exception.Message, result.Message);\r
144             }\r
145         }\r
146 \r
147 #endif\r
148 \r
149         private static ImportCardinalityMismatchException CreateCardinalityMismatchException()\r
150         {\r
151             return CreateCardinalityMismatchException((string)null, (Exception)null);\r
152         }\r
153 \r
154         private static ImportCardinalityMismatchException CreateCardinalityMismatchException(string message)\r
155         {\r
156             return CreateCardinalityMismatchException(message, (Exception)null);\r
157         }\r
158 \r
159         private static ImportCardinalityMismatchException CreateCardinalityMismatchException(Exception innerException)\r
160         {\r
161             return CreateCardinalityMismatchException((string)null, innerException);\r
162         }\r
163 \r
164         private static ImportCardinalityMismatchException CreateCardinalityMismatchException(string message, Exception innerException)\r
165         {\r
166             return new ImportCardinalityMismatchException(message, innerException);\r
167         }\r
168     }\r
169 }\r