1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
6 using System.UnitTesting;
\r
7 using System.ComponentModel.Composition.Hosting;
\r
8 using System.ComponentModel.Composition.Factories;
\r
9 using System.ComponentModel.Composition.Primitives;
\r
10 using System.ComponentModel.Composition.UnitTesting;
\r
11 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
14 using System.Runtime.Serialization;
\r
17 namespace System.ComponentModel.Composition
\r
20 public class CompositionErrorTests
\r
23 public void Constructor1_NullAsMessageArgument_ShouldSetMessagePropertyToEmptyString()
\r
25 var error = new CompositionError((string)null);
\r
27 Assert.AreEqual("", error.Description);
\r
31 public void Constructor2_NullAsMessageArgument_ShouldSetMessagePropertyToEmptyString()
\r
33 var error = new CompositionError((string)null, ElementFactory.Create());
\r
35 Assert.AreEqual("", error.Description);
\r
39 public void Constructor3_NullAsMessageArgument_ShouldSetMessagePropertyToEmptyString()
\r
41 var error = new CompositionError((string)null, new Exception());
\r
43 Assert.AreEqual("", error.Description);
\r
47 public void Constructor4_NullAsMessageArgument_ShouldSetMessagePropertyToEmptyString()
\r
49 var error = new CompositionError((string)null, ElementFactory.Create(), new Exception());
\r
51 Assert.AreEqual("", error.Description);
\r
55 public void Constructor5_NullAsMessageArgument_ShouldSetMessagePropertyToEmptyString()
\r
57 var error = new CompositionError(CompositionErrorId.Unknown, (string)null, ElementFactory.Create(), new Exception());
\r
59 Assert.AreEqual("", error.Description);
\r
63 public void Constructor1_ValueAsMessageArgument_ShouldSetMessageProperty()
\r
65 var expectations = Expectations.GetExceptionMessages();
\r
67 foreach (var e in expectations)
\r
69 var exception = new CompositionError(e);
\r
71 Assert.AreEqual(e, exception.Description);
\r
76 public void Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty()
\r
78 var expectations = Expectations.GetExceptionMessages();
\r
80 foreach (var e in expectations)
\r
82 var exception = new CompositionError(e, ElementFactory.Create());
\r
84 Assert.AreEqual(e, exception.Description);
\r
89 public void Constructor3_ValueAsMessageArgument_ShouldSetMessageProperty()
\r
91 var expectations = Expectations.GetExceptionMessages();
\r
93 foreach (var e in expectations)
\r
95 var exception = new CompositionError(e, new Exception());
\r
97 Assert.AreEqual(e, exception.Description);
\r
102 public void Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty()
\r
104 var expectations = Expectations.GetExceptionMessages();
\r
106 foreach (var e in expectations)
\r
108 var exception = new CompositionError(e, ElementFactory.Create(), new Exception());
\r
110 Assert.AreEqual(e, exception.Description);
\r
115 public void Constructor5_ValueAsMessageArgument_ShouldSetMessageProperty()
\r
117 var expectations = Expectations.GetExceptionMessages();
\r
119 foreach (var e in expectations)
\r
121 var exception = new CompositionError(CompositionErrorId.Unknown, e, ElementFactory.Create(), new Exception());
\r
123 Assert.AreEqual(e, exception.Description);
\r
128 public void Constructor1_ShouldSetExceptionPropertyToNull()
\r
130 var error = new CompositionError("Description");
\r
132 Assert.IsNull(error.Exception);
\r
136 public void Constructor2_ShouldSetExceptionPropertyToNull()
\r
138 var error = new CompositionError("Description", ElementFactory.Create());
\r
140 Assert.IsNull(error.Exception);
\r
144 public void Constructor3_NullAsExceptionArgument_ShouldSetExceptionPropertyToNull()
\r
146 var error = new CompositionError("Description", (Exception)null);
\r
148 Assert.IsNull(error.Exception);
\r
152 public void Constructor4_NullAsExceptionArgument_ShouldSetExceptionPropertyToNull()
\r
154 var error = new CompositionError("Description", ElementFactory.Create(), (Exception)null);
\r
156 Assert.IsNull(error.Exception);
\r
160 public void Constructor5_NullAsExceptionArgument_ShouldSetExceptionPropertyToNull()
\r
162 var error = new CompositionError(CompositionErrorId.Unknown, "Description", ElementFactory.Create(), (Exception)null);
\r
164 Assert.IsNull(error.Exception);
\r
168 public void Constructor3_ValueAsExceptionArgument_ShouldSetExceptionProperty()
\r
170 var expectations = Expectations.GetInnerExceptions();
\r
172 foreach (var e in expectations)
\r
174 var error = new CompositionError("Description", e);
\r
176 Assert.AreSame(e, error.Exception);
\r
181 public void Constructor4_ValueAsExceptionArgument_ShouldSetExceptionProperty()
\r
183 var expectations = Expectations.GetInnerExceptions();
\r
185 foreach (var e in expectations)
\r
187 var error = new CompositionError("Description", ElementFactory.Create(), e);
\r
189 Assert.AreSame(e, error.Exception);
\r
194 public void Constructor5_ValueAsExceptionArgument_ShouldSetExceptionProperty()
\r
196 var expectations = Expectations.GetInnerExceptions();
\r
198 foreach (var e in expectations)
\r
200 var error = new CompositionError(CompositionErrorId.Unknown, "Description", ElementFactory.Create(), e);
\r
202 Assert.AreSame(e, error.Exception);
\r
207 public void Constructor1_ShouldSetInnerExceptionPropertyToNull()
\r
209 var error = new CompositionError("Description");
\r
211 Assert.IsNull(((ICompositionError)error).InnerException);
\r
215 public void Constructor2_ShouldSetInnerExceptionPropertyToNull()
\r
217 var error = new CompositionError("Description", ElementFactory.Create());
\r
219 Assert.IsNull(((ICompositionError)error).InnerException);
\r
223 public void Constructor3_NullAsExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
\r
225 var error = new CompositionError("Description", (Exception)null);
\r
227 Assert.IsNull(((ICompositionError)error).InnerException);
\r
231 public void Constructor4_NullAsExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
\r
233 var error = new CompositionError("Description", ElementFactory.Create(), (Exception)null);
\r
235 Assert.IsNull(((ICompositionError)error).InnerException);
\r
239 public void Constructor5_NullAsExceptionArgument_ShouldSetInnerExceptionPropertyToNull()
\r
241 var error = new CompositionError(CompositionErrorId.Unknown, "Description", ElementFactory.Create(), (Exception)null);
\r
243 Assert.IsNull(((ICompositionError)error).InnerException);
\r
247 public void Constructor3_ValueAsExceptionArgument_ShouldSetInnerExceptionProperty()
\r
249 var expectations = Expectations.GetInnerExceptions();
\r
251 foreach (var e in expectations)
\r
253 var error = new CompositionError("Description", e);
\r
255 Assert.AreSame(e, ((ICompositionError)error).InnerException);
\r
260 public void Constructor4_ValueAsExceptionArgument_ShouldSetInnerExceptionProperty()
\r
262 var expectations = Expectations.GetInnerExceptions();
\r
264 foreach (var e in expectations)
\r
266 var error = new CompositionError("Description", ElementFactory.Create(), e);
\r
268 Assert.AreSame(e, ((ICompositionError)error).InnerException);
\r
273 public void Constructor1_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
\r
275 var error = new CompositionError("Description");
\r
277 Assert.AreEqual(CompositionErrorId.Unknown, ((ICompositionError)error).Id);
\r
281 public void Constructor2_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
\r
283 var error = new CompositionError("Description", ElementFactory.Create());
\r
285 Assert.AreEqual(CompositionErrorId.Unknown, ((ICompositionError)error).Id);
\r
289 public void Constructor3_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
\r
291 var error = new CompositionError("Description", new Exception());
\r
293 Assert.AreEqual(CompositionErrorId.Unknown, ((ICompositionError)error).Id);
\r
297 public void Constructor4_ShouldSetICompositionErrorIdPropertyToCompositionErrorIdUnknown()
\r
299 var error = new CompositionError("Description", ElementFactory.Create(), new Exception());
\r
301 Assert.AreEqual(CompositionErrorId.Unknown, ((ICompositionError)error).Id);
\r
305 public void Constructor5_ValueAsIdArgument_ShouldSetICompositionErrorIdProperty()
\r
307 var expectations = Expectations.GetEnumValues<CompositionErrorId>();
\r
309 foreach (var e in expectations)
\r
311 var error = new CompositionError(e, "Description", ElementFactory.Create(), new Exception());
\r
313 Assert.AreEqual(e, ((ICompositionError)error).Id);
\r
318 public void Constructor1_ShouldSetElementPropertyToNull()
\r
320 var exception = new CompositionError("Description");
\r
322 Assert.IsNull(exception.Element);
\r
326 public void Constructor2_NullAsElementArgument_ShouldSetElementPropertyToNull()
\r
328 var exception = new CompositionError("Description", (ICompositionElement)null);
\r
330 Assert.IsNull(exception.Element);
\r
334 public void Constructor3_ShouldSetElementPropertyToNull()
\r
336 var exception = new CompositionError("Description", new Exception());
\r
338 Assert.IsNull(exception.Element);
\r
342 public void Constructor4_NullAsElementArgument_ShouldSetElementPropertyToNull()
\r
344 var exception = new CompositionError("Description", (ICompositionElement)null, new Exception());
\r
346 Assert.IsNull(exception.Element);
\r
350 public void Constructor5_NullAsElementArgument_ShouldSetElementPropertyToNull()
\r
352 var exception = new CompositionError(CompositionErrorId.Unknown, "Description", (ICompositionElement)null, new Exception());
\r
354 Assert.IsNull(exception.Element);
\r
358 public void Constructor2_ValueAsElementArgument_ShouldSetElementProperty()
\r
360 var expectations = Expectations.GetCompositionElements();
\r
362 foreach (var e in expectations)
\r
364 var exception = new CompositionError("Description", (ICompositionElement)e);
\r
366 Assert.AreSame(e, exception.Element);
\r
371 public void Constructor4_ValueAsElementArgument_ShouldSetElementProperty()
\r
373 var expectations = Expectations.GetCompositionElements();
\r
375 foreach (var e in expectations)
\r
377 var exception = new CompositionError("Description", (ICompositionElement)e, new Exception());
\r
379 Assert.AreSame(e, exception.Element);
\r
384 public void Constructor5_ValueAsElementArgument_ShouldSetElementProperty()
\r
386 var expectations = Expectations.GetCompositionElements();
\r
388 foreach (var e in expectations)
\r
390 var exception = new CompositionError(CompositionErrorId.Unknown, "Description", (ICompositionElement)e, new Exception());
\r
392 Assert.AreSame(e, exception.Element);
\r
397 public void ToString_ShouldReturnMessageProperty()
\r
399 var expectations = Expectations.GetExceptionMessages();
\r
401 foreach (var e in expectations)
\r
403 var error = CreateCompositionError(e);
\r
405 Assert.AreEqual(error.Description, error.ToString());
\r
412 public void ICompositionErrorId_CanBeSerialized()
\r
414 var expectations = Expectations.GetEnumValues<CompositionErrorId>();
\r
416 foreach (var e in expectations)
\r
418 var error = (ICompositionError)CreateCompositionError(e);
\r
420 var result = SerializationTestServices.RoundTrip(error);
\r
422 Assert.AreEqual(error.Id, result.Id);
\r
427 public void Exception_CanBeSerialized()
\r
429 var expectations = Expectations.GetInnerExceptionsWithNull();
\r
431 foreach (var e in expectations)
\r
433 var error = CreateCompositionError(e);
\r
435 var result = SerializationTestServices.RoundTrip(error);
\r
437 ExtendedAssert.IsInstanceOfSameType(error.Exception, result.Exception);
\r
442 public void Message_CanBeSerialized()
\r
444 var expectations = Expectations.GetExceptionMessages();
\r
446 foreach (var e in expectations)
\r
448 var error = CreateCompositionError(e);
\r
450 var result = SerializationTestServices.RoundTrip(error);
\r
452 Assert.AreEqual(error.Description, result.Description);
\r
458 private static CompositionError CreateCompositionError()
\r
460 return CreateCompositionError(CompositionErrorId.Unknown, (string)null, (ICompositionElement)null, (Exception)null);
\r
463 private static CompositionError CreateCompositionError(string message)
\r
465 return CreateCompositionError(CompositionErrorId.Unknown, message, (ICompositionElement)null, (Exception)null);
\r
468 private static CompositionError CreateCompositionError(CompositionErrorId id)
\r
470 return CreateCompositionError(id, (string)null, (ICompositionElement)null, (Exception)null);
\r
473 private static CompositionError CreateCompositionError(Exception exception)
\r
475 return CreateCompositionError(CompositionErrorId.Unknown, (string)null, (ICompositionElement)null, exception);
\r
478 private static CompositionError CreateCompositionError(ICompositionElement element)
\r
480 return CreateCompositionError(CompositionErrorId.Unknown, (string)null, element, (Exception)null);
\r
483 private static CompositionError CreateCompositionError(CompositionErrorId id, string message, ICompositionElement element, Exception exception)
\r
485 return new CompositionError(id, message, element, exception);
\r
488 private static CompositionError CreateCompositionError(params string[] messages)
\r
490 CompositionError error = null;
\r
491 foreach (string message in messages.Reverse())
\r
493 CompositionException exception = null;
\r
496 exception = CreateCompositionException(error);
\r
499 error = ErrorFactory.Create(message, exception);
\r
505 private static CompositionError CreateCompositionErrorWithException(params string[] messages)
\r
507 Exception innerException = null;
\r
508 foreach (string message in messages.Skip(1).Reverse())
\r
510 innerException = new Exception(message, innerException);
\r
513 return new CompositionError(messages[0], innerException);
\r
516 private static CompositionError CreateCompostionErrorWithCompositionException(string message1, string message2)
\r
518 var exception = CreateCompositionException(new Exception(message2));
\r
520 return new CompositionError(message1, exception);
\r
523 private static CompositionException CreateCompositionException(CompositionError error)
\r
525 return new CompositionException(error);
\r
528 private static CompositionException CreateCompositionException(Exception innerException)
\r
530 return new CompositionException("Description", innerException, null);
\r