update MEF to preview 9
[mcs.git] / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / System / ComponentModel / Composition / ComposablePartExceptionTests.cs
blobf56a866f973bfcc8ece49fb7f9d6ff4f180979ce
1 // -----------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 // -----------------------------------------------------------------------
4 using System;
5 using System.UnitTesting;
6 using System.ComponentModel.Composition.Hosting;
7 using System.ComponentModel.Composition.Primitives;
8 using System.ComponentModel.Composition.Factories;
9 using System.ComponentModel.Composition.UnitTesting;
10 using Microsoft.VisualStudio.TestTools.UnitTesting;
12 #if !SILVERLIGHT
13 using System.Runtime.Serialization;
14 #endif
16 namespace System.ComponentModel.Composition
18 [TestClass]
19 public class CompositionPartExceptionTests
21 [TestMethod]
22 public void Constructor1_ShouldSetMessagePropertyToDefault()
24 var exception = new ComposablePartException();
26 ExceptionAssert.HasDefaultMessage(exception);
29 [TestMethod]
30 public void Constructor2_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
32 var exception = new ComposablePartException((string)null);
34 ExceptionAssert.HasDefaultMessage(exception);
37 [TestMethod]
38 public void Constructor3_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
40 var exception = new ComposablePartException((string)null, ElementFactory.Create());
42 ExceptionAssert.HasDefaultMessage(exception);
45 [TestMethod]
46 public void Constructor4_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
48 var exception = new ComposablePartException((string)null, new Exception());
50 ExceptionAssert.HasDefaultMessage(exception);
53 [TestMethod]
54 public void Constructor5_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
56 var exception = new ComposablePartException((string)null, ElementFactory.Create(), new Exception());
58 ExceptionAssert.HasDefaultMessage(exception);
61 [TestMethod]
62 public void Constructor6_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
64 var exception = new ComposablePartException(CompositionErrorId.Unknown, (string)null);
66 ExceptionAssert.HasDefaultMessage(exception);
69 [TestMethod]
70 public void Constructor7_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
72 var exception = new ComposablePartException(CompositionErrorId.Unknown, (string)null, new Exception());
74 ExceptionAssert.HasDefaultMessage(exception);
77 [TestMethod]
78 public void Constructor8_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
80 var exception = new ComposablePartException(CompositionErrorId.Unknown, (string)null, ElementFactory.Create());
82 ExceptionAssert.HasDefaultMessage(exception);
85 [TestMethod]
86 public void Constructor9_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
88 var exception = new ComposablePartException(CompositionErrorId.Unknown, (string)null, ElementFactory.Create(), new Exception());
90 ExceptionAssert.HasDefaultMessage(exception);
93 [TestMethod]
94 public void Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty()
96 var expectations = Expectations.GetExceptionMessages();
98 foreach (var e in expectations)
100 var exception = new ComposablePartException(e);
102 Assert.AreEqual(e, exception.Message);
106 [TestMethod]
107 public void Constructor3_ValueAsMessageArgument_ShouldSetMessageProperty()
109 var expectations = Expectations.GetExceptionMessages();
111 foreach (var e in expectations)
113 var exception = new ComposablePartException(e, ElementFactory.Create());
115 Assert.AreEqual(e, exception.Message);
119 [TestMethod]
120 public void Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty()
122 var expectations = Expectations.GetExceptionMessages();
124 foreach (var e in expectations)
126 var exception = new ComposablePartException(e, new Exception());
128 Assert.AreEqual(e, exception.Message);
132 [TestMethod]
133 public void Constructor5_ValueAsMessageArgument_ShouldSetMessageProperty()
135 var expectations = Expectations.GetExceptionMessages();
137 foreach (var e in expectations)
139 var exception = new ComposablePartException(e, ElementFactory.Create(), new Exception());
141 Assert.AreEqual(e, exception.Message);
145 [TestMethod]
146 public void Constructor6_ValueAsMessageArgument_ShouldSetMessageProperty()
148 var expectations = Expectations.GetExceptionMessages();
150 foreach (var e in expectations)
152 var exception = new ComposablePartException(CompositionErrorId.Unknown, e);
154 Assert.AreEqual(e, exception.Message);
158 [TestMethod]
159 public void Constructor7_ValueAsMessageArgument_ShouldSetMessageProperty()
161 var expectations = Expectations.GetExceptionMessages();
163 foreach (var e in expectations)
165 var exception = new ComposablePartException(CompositionErrorId.Unknown, e, new Exception());
167 Assert.AreEqual(e, exception.Message);
171 [TestMethod]
172 public void Constructor8_ValueAsMessageArgument_ShouldSetMessageProperty()
174 var expectations = Expectations.GetExceptionMessages();
176 foreach (var e in expectations)
178 var exception = new ComposablePartException(CompositionErrorId.Unknown, e, ElementFactory.Create());
180 Assert.AreEqual(e, exception.Message);
184 [TestMethod]
185 public void Constructor9_ValueAsMessageArgument_ShouldSetMessageProperty()
187 var expectations = Expectations.GetExceptionMessages();
189 foreach (var e in expectations)
191 var exception = new ComposablePartException(CompositionErrorId.Unknown, e, ElementFactory.Create(), new Exception());
193 Assert.AreEqual(e, exception.Message);
197 [TestMethod]
198 public void Constructor1_ShouldSetInnerExceptionPropertyToNull()
200 var exception = new ComposablePartException();
202 Assert.IsNull(exception.InnerException);
205 [TestMethod]
206 public void Constructor2_ShouldSetInnerExceptionPropertyToNull()
208 var exception = new ComposablePartException("Message");
210 Assert.IsNull(exception.InnerException);
213 [TestMethod]
214 public void Constructor3_ShouldSetInnerExceptionPropertyToNull()
216 var exception = new ComposablePartException("Message", ElementFactory.Create());
218 Assert.IsNull(exception.InnerException);
221 [TestMethod]
222 public void Constructor4_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
224 var exception = new ComposablePartException("Message", (Exception)null);
226 Assert.IsNull(exception.InnerException);
229 [TestMethod]
230 public void Constructor5_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
232 var exception = new ComposablePartException("Message", ElementFactory.Create(), (Exception)null);
234 Assert.IsNull(exception.InnerException);
237 [TestMethod]
238 public void Constructor6_ShouldSetInnerExceptionPropertyToNull()
240 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message");
242 Assert.IsNull(exception.InnerException);
245 [TestMethod]
246 public void Constructor7_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
248 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", (Exception)null);
250 Assert.IsNull(exception.InnerException);
253 [TestMethod]
254 public void Constructor8_ShouldSetInnerExceptionPropertyToNull()
256 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", ElementFactory.Create());
258 Assert.IsNull(exception.InnerException);
261 [TestMethod]
262 public void Constructor9_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
264 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", ElementFactory.Create(), (Exception)null);
266 Assert.IsNull(exception.InnerException);
269 [TestMethod]
270 public void Constructor4_ValueAsInnerExceptionArgument_ShouldSetInnerExceptionProperty()
272 var expectations = Expectations.GetInnerExceptions();
274 foreach (var e in expectations)
276 var exception = new ComposablePartException("Message", e);
278 Assert.AreSame(e, exception.InnerException);
282 [TestMethod]
283 public void Constructor5_ValueAsInnerExceptionArgument_ShouldSetInnerExceptionProperty()
285 var expectations = Expectations.GetInnerExceptions();
287 foreach (var e in expectations)
289 var exception = new ComposablePartException("Message", ElementFactory.Create(), e);
291 Assert.AreSame(e, exception.InnerException);
295 [TestMethod]
296 public void Constructor7_ValueAsInnerExceptionArgument_ShouldSetInnerExceptionProperty()
298 var expectations = Expectations.GetInnerExceptions();
300 foreach (var e in expectations)
302 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", e);
304 Assert.AreSame(e, exception.InnerException);
308 [TestMethod]
309 public void Constructor9_ValueAsInnerExceptionArgument_ShouldSetInnerExceptionProperty()
311 var expectations = Expectations.GetInnerExceptions();
313 foreach (var e in expectations)
315 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", ElementFactory.Create(), e);
317 Assert.AreSame(e, exception.InnerException);
321 [TestMethod]
322 public void Constructor1_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
324 var exception = (ICompositionError)new ComposablePartException();
326 Assert.AreEqual(CompositionErrorId.Unknown, exception.Id);
329 [TestMethod]
330 public void Constructor2_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
332 var exception = (ICompositionError)new ComposablePartException("Message");
334 Assert.AreEqual(CompositionErrorId.Unknown, exception.Id);
337 [TestMethod]
338 public void Constructor3_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
340 var exception = (ICompositionError)new ComposablePartException("Message", ElementFactory.Create());
342 Assert.AreEqual(CompositionErrorId.Unknown, exception.Id);
345 [TestMethod]
346 public void Constructor4_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
348 var exception = (ICompositionError)new ComposablePartException("Message", new Exception());
350 Assert.AreEqual(CompositionErrorId.Unknown, exception.Id);
353 [TestMethod]
354 public void Constructor5_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
356 var exception = (ICompositionError)new ComposablePartException("Message", ElementFactory.Create(), new Exception());
358 Assert.AreEqual(CompositionErrorId.Unknown, exception.Id);
361 [TestMethod]
362 public void Constructor6_ValueAsIdArgument_ShouldSetICompositionErrorIdProperty()
364 var expectations = Expectations.GetEnumValues<CompositionErrorId>();
366 foreach (var e in expectations)
368 var exception = (ICompositionError)new ComposablePartException(e, "Message");
370 Assert.AreEqual(e, exception.Id);
374 [TestMethod]
375 public void Constructor7_ValueAsIdArgument_ShouldSetICompositionErrorIdProperty()
377 var expectations = Expectations.GetEnumValues<CompositionErrorId>();
379 foreach (var e in expectations)
381 var exception = (ICompositionError)new ComposablePartException(e, "Message", new Exception());
383 Assert.AreEqual(e, exception.Id);
387 [TestMethod]
388 public void Constructor8_ValueAsIdArgument_ShouldSetICompositionErrorIdProperty()
390 var expectations = Expectations.GetEnumValues<CompositionErrorId>();
392 foreach (var e in expectations)
394 var exception = (ICompositionError)new ComposablePartException(e, "Message", ElementFactory.Create());
396 Assert.AreEqual(e, exception.Id);
400 [TestMethod]
401 public void Constructor9_ValueAsIdArgument_ShouldSetICompositionErrorIdProperty()
403 var expectations = Expectations.GetEnumValues<CompositionErrorId>();
405 foreach (var e in expectations)
407 var exception = (ICompositionError)new ComposablePartException(e, "Message", ElementFactory.Create(), new Exception());
409 Assert.AreEqual(e, exception.Id);
413 [TestMethod]
414 public void Constructor1_ShouldSetElementPropertyToNull()
416 var exception = new ComposablePartException();
418 Assert.IsNull(exception.Element);
421 [TestMethod]
422 public void Constructor2_ShouldSetElementPropertyToNull()
424 var exception = new ComposablePartException("Message");
426 Assert.IsNull(exception.Element);
429 [TestMethod]
430 public void Constructor3_NullAsElementArgument_ShouldSetElementPropertyToNull()
432 var exception = new ComposablePartException("Message", (ICompositionElement)null);
434 Assert.IsNull(exception.Element);
437 [TestMethod]
438 public void Constructor4_ShouldSetElementPropertyToNull()
440 var exception = new ComposablePartException("Message", new Exception());
442 Assert.IsNull(exception.Element);
445 [TestMethod]
446 public void Constructor5_NullAsElementArgument_ShouldSetElementPropertyToNull()
448 var exception = new ComposablePartException("Message", (ICompositionElement)null, new Exception());
450 Assert.IsNull(exception.Element);
453 [TestMethod]
454 public void Constructor6_ShouldSetElementPropertyToNull()
456 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message");
458 Assert.IsNull(exception.Element);
461 [TestMethod]
462 public void Constructor7_ShouldSetElementPropertyToNull()
464 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", new Exception());
466 Assert.IsNull(exception.Element);
469 [TestMethod]
470 public void Constructor8_NullAsElementArgument_ShouldSetElementPropertyToNull()
472 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", (ICompositionElement)null);
474 Assert.IsNull(exception.Element);
477 [TestMethod]
478 public void Constructor9_NullAsElementArgument_ShouldSetElementPropertyToNull()
480 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", (ICompositionElement)null, new Exception());
482 Assert.IsNull(exception.Element);
485 [TestMethod]
486 public void Constructor3_ValueAsElementArgument_ShouldSetElementProperty()
488 var expectations = Expectations.GetCompositionElements();
490 foreach (var e in expectations)
492 var exception = new ComposablePartException("Message", (ICompositionElement)e);
494 Assert.AreSame(e, exception.Element);
498 [TestMethod]
499 public void Constructor5_ValueAsElementArgument_ShouldSetElementProperty()
501 var expectations = Expectations.GetCompositionElements();
503 foreach (var e in expectations)
505 var exception = new ComposablePartException("Message", (ICompositionElement)e, new Exception());
507 Assert.AreSame(e, exception.Element);
511 [TestMethod]
512 public void Constructor8_ValueAsElementArgument_ShouldSetElementProperty()
514 var expectations = Expectations.GetCompositionElements();
516 foreach (var e in expectations)
518 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", (ICompositionElement)e);
520 Assert.AreSame(e, exception.Element);
524 [TestMethod]
525 public void Constructor9_ValueAsElementArgument_ShouldSetElementProperty()
527 var expectations = Expectations.GetCompositionElements();
529 foreach (var e in expectations)
531 var exception = new ComposablePartException(CompositionErrorId.Unknown, "Message", (ICompositionElement)e, new Exception());
533 Assert.AreSame(e, exception.Element);
537 #if !SILVERLIGHT
539 [TestMethod]
540 public void Constructor10_NullAsInfoArgument_ShouldThrowArgumentNull()
542 var context = new StreamingContext();
544 ExceptionAssert.ThrowsArgument<ArgumentNullException>("info", () =>
546 SerializationTestServices.Create<ComposablePartException>((SerializationInfo)null, context);
550 [TestMethod]
551 public void Constructor10_SerializationInfoWithMissingIdEntryAsInfoArgument_ShouldThrowSerialization()
553 var info = SerializationTestServices.CreateSerializationInfoRemovingMember<ComposablePartException>("Id");
554 var context = new StreamingContext();
556 ExceptionAssert.ThrowsSerialization("Id", () =>
558 SerializationTestServices.Create<ComposablePartException>(info, context);
562 [TestMethod]
563 public void Constructor10_SerializationInfoWithMissingElementEntryAsInfoArgument_ShouldThrowSerialization()
565 var info = SerializationTestServices.CreateSerializationInfoRemovingMember<ComposablePartException>("Element");
566 var context = new StreamingContext();
568 ExceptionAssert.ThrowsSerialization("Element", () =>
570 SerializationTestServices.Create<ComposablePartException>(info, context);
574 [TestMethod]
575 public void Constructor10_SerializationInfoWithWrongTypeForIdEntryAsInfoArgument_ShouldThrowInvalidCast()
577 var info = SerializationTestServices.CreateSerializationInfoReplacingMember<ComposablePartException>("Id", "InvalidValue");
578 var context = new StreamingContext();
580 ExceptionAssert.Throws<InvalidCastException>(() =>
582 SerializationTestServices.Create<ComposablePartException>(info, context);
586 [TestMethod]
587 public void Constructor10_SerializationInfoWithWrongTypeForElementEntryAsInfoArgument_ShouldThrowInvalidCast()
589 var info = SerializationTestServices.CreateSerializationInfoReplacingMember<ComposablePartException>("Element", 10);
590 var context = new StreamingContext();
592 ExceptionAssert.Throws<InvalidCastException>(() =>
594 SerializationTestServices.Create<ComposablePartException>(info, context);
598 [TestMethod]
599 public void Id_CanBeSerialized()
601 var expectations = Expectations.GetEnumValues<CompositionErrorId>();
603 foreach (var e in expectations)
605 var exception = (ICompositionError)CreateComposablePartException(e);
607 var result = (ICompositionError)SerializationTestServices.RoundTrip(exception);
609 Assert.AreEqual(exception.Id, result.Id);
613 [TestMethod]
614 public void Element_CanBeSerialized()
616 var expectations = Expectations.GetCompositionElementsWithNull();
618 foreach (var e in expectations)
620 var exception = CreateComposablePartException(e);
622 var result = SerializationTestServices.RoundTrip(exception);
624 ElementAssert.AreEqual(exception.Element, result.Element);
628 [TestMethod]
629 public void InnerException_CanBeSerialized()
631 var expectations = Expectations.GetInnerExceptions();
633 foreach (var e in expectations)
635 var exception = CreateComposablePartException(e);
637 var result = SerializationTestServices.RoundTrip(exception);
639 ExtendedAssert.IsInstanceOfSameType(exception.InnerException, result.InnerException);
643 [TestMethod]
644 public void Message_CanBeSerialized()
646 var expectations = Expectations.GetExceptionMessages();
648 foreach (var e in expectations)
650 var exception = CreateComposablePartException(e);
652 var result = SerializationTestServices.RoundTrip(exception);
654 Assert.AreEqual(exception.Message, result.Message);
658 #endif
660 private static ComposablePartException CreateComposablePartException()
662 return CreateComposablePartException(CompositionErrorId.Unknown, (string)null, (ICompositionElement)null, (Exception)null);
665 private static ComposablePartException CreateComposablePartException(string message)
667 return CreateComposablePartException(CompositionErrorId.Unknown, message, (ICompositionElement)null, (Exception)null);
670 private static ComposablePartException CreateComposablePartException(CompositionErrorId id)
672 return CreateComposablePartException(CompositionErrorId.Unknown, (string)null, (ICompositionElement)null, (Exception)null);
675 private static ComposablePartException CreateComposablePartException(ICompositionElement element)
677 return CreateComposablePartException(CompositionErrorId.Unknown, (string)null, element, (Exception)null);
680 private static ComposablePartException CreateComposablePartException(Exception innerException)
682 return CreateComposablePartException(CompositionErrorId.Unknown, (string)null, (ICompositionElement)null, innerException);
685 private static ComposablePartException CreateComposablePartException(CompositionErrorId id, string message, ICompositionElement element, Exception innerException)
687 return new ComposablePartException(id, message, element, innerException);