1 // -----------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 // -----------------------------------------------------------------------
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
;
13 using System
.Runtime
.Serialization
;
16 namespace System
.ComponentModel
.Composition
19 public class CompositionPartExceptionTests
22 public void Constructor1_ShouldSetMessagePropertyToDefault()
24 var exception
= new ComposablePartException();
26 ExceptionAssert
.HasDefaultMessage(exception
);
30 public void Constructor2_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
32 var exception
= new ComposablePartException((string)null);
34 ExceptionAssert
.HasDefaultMessage(exception
);
38 public void Constructor3_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
40 var exception
= new ComposablePartException((string)null, ElementFactory
.Create());
42 ExceptionAssert
.HasDefaultMessage(exception
);
46 public void Constructor4_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
48 var exception
= new ComposablePartException((string)null, new Exception());
50 ExceptionAssert
.HasDefaultMessage(exception
);
54 public void Constructor5_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
56 var exception
= new ComposablePartException((string)null, ElementFactory
.Create(), new Exception());
58 ExceptionAssert
.HasDefaultMessage(exception
);
62 public void Constructor6_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
64 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, (string)null);
66 ExceptionAssert
.HasDefaultMessage(exception
);
70 public void Constructor7_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
72 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, (string)null, new Exception());
74 ExceptionAssert
.HasDefaultMessage(exception
);
78 public void Constructor8_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
80 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, (string)null, ElementFactory
.Create());
82 ExceptionAssert
.HasDefaultMessage(exception
);
86 public void Constructor9_NullAsMessageArgument_ShouldSetMessagePropertyToDefault()
88 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, (string)null, ElementFactory
.Create(), new Exception());
90 ExceptionAssert
.HasDefaultMessage(exception
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
198 public void Constructor1_ShouldSetInnerExceptionPropertyToNull()
200 var exception
= new ComposablePartException();
202 Assert
.IsNull(exception
.InnerException
);
206 public void Constructor2_ShouldSetInnerExceptionPropertyToNull()
208 var exception
= new ComposablePartException("Message");
210 Assert
.IsNull(exception
.InnerException
);
214 public void Constructor3_ShouldSetInnerExceptionPropertyToNull()
216 var exception
= new ComposablePartException("Message", ElementFactory
.Create());
218 Assert
.IsNull(exception
.InnerException
);
222 public void Constructor4_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
224 var exception
= new ComposablePartException("Message", (Exception
)null);
226 Assert
.IsNull(exception
.InnerException
);
230 public void Constructor5_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
232 var exception
= new ComposablePartException("Message", ElementFactory
.Create(), (Exception
)null);
234 Assert
.IsNull(exception
.InnerException
);
238 public void Constructor6_ShouldSetInnerExceptionPropertyToNull()
240 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message");
242 Assert
.IsNull(exception
.InnerException
);
246 public void Constructor7_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
248 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message", (Exception
)null);
250 Assert
.IsNull(exception
.InnerException
);
254 public void Constructor8_ShouldSetInnerExceptionPropertyToNull()
256 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message", ElementFactory
.Create());
258 Assert
.IsNull(exception
.InnerException
);
262 public void Constructor9_NullAsInnerExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
264 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message", ElementFactory
.Create(), (Exception
)null);
266 Assert
.IsNull(exception
.InnerException
);
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
);
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
);
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
);
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
);
322 public void Constructor1_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
324 var exception
= (ICompositionError
)new ComposablePartException();
326 Assert
.AreEqual(CompositionErrorId
.Unknown
, exception
.Id
);
330 public void Constructor2_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
332 var exception
= (ICompositionError
)new ComposablePartException("Message");
334 Assert
.AreEqual(CompositionErrorId
.Unknown
, exception
.Id
);
338 public void Constructor3_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
340 var exception
= (ICompositionError
)new ComposablePartException("Message", ElementFactory
.Create());
342 Assert
.AreEqual(CompositionErrorId
.Unknown
, exception
.Id
);
346 public void Constructor4_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
348 var exception
= (ICompositionError
)new ComposablePartException("Message", new Exception());
350 Assert
.AreEqual(CompositionErrorId
.Unknown
, exception
.Id
);
354 public void Constructor5_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
356 var exception
= (ICompositionError
)new ComposablePartException("Message", ElementFactory
.Create(), new Exception());
358 Assert
.AreEqual(CompositionErrorId
.Unknown
, exception
.Id
);
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
);
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
);
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
);
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
);
414 public void Constructor1_ShouldSetElementPropertyToNull()
416 var exception
= new ComposablePartException();
418 Assert
.IsNull(exception
.Element
);
422 public void Constructor2_ShouldSetElementPropertyToNull()
424 var exception
= new ComposablePartException("Message");
426 Assert
.IsNull(exception
.Element
);
430 public void Constructor3_NullAsElementArgument_ShouldSetElementPropertyToNull()
432 var exception
= new ComposablePartException("Message", (ICompositionElement
)null);
434 Assert
.IsNull(exception
.Element
);
438 public void Constructor4_ShouldSetElementPropertyToNull()
440 var exception
= new ComposablePartException("Message", new Exception());
442 Assert
.IsNull(exception
.Element
);
446 public void Constructor5_NullAsElementArgument_ShouldSetElementPropertyToNull()
448 var exception
= new ComposablePartException("Message", (ICompositionElement
)null, new Exception());
450 Assert
.IsNull(exception
.Element
);
454 public void Constructor6_ShouldSetElementPropertyToNull()
456 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message");
458 Assert
.IsNull(exception
.Element
);
462 public void Constructor7_ShouldSetElementPropertyToNull()
464 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message", new Exception());
466 Assert
.IsNull(exception
.Element
);
470 public void Constructor8_NullAsElementArgument_ShouldSetElementPropertyToNull()
472 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message", (ICompositionElement
)null);
474 Assert
.IsNull(exception
.Element
);
478 public void Constructor9_NullAsElementArgument_ShouldSetElementPropertyToNull()
480 var exception
= new ComposablePartException(CompositionErrorId
.Unknown
, "Message", (ICompositionElement
)null, new Exception());
482 Assert
.IsNull(exception
.Element
);
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
);
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
);
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
);
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
);
540 public void Constructor10_NullAsInfoArgument_ShouldThrowArgumentNull()
542 var context
= new StreamingContext();
544 ExceptionAssert
.ThrowsArgument
<ArgumentNullException
>("info", () =>
546 SerializationTestServices
.Create
<ComposablePartException
>((SerializationInfo
)null, context
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);