1
// -----------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 // -----------------------------------------------------------------------
5 using System
.Collections
.Generic
;
6 using System
.ComponentModel
.Composition
.UnitTesting
;
7 using System
.ComponentModel
.Composition
.Factories
;
9 using System
.UnitTesting
;
10 using Microsoft
.VisualStudio
.TestTools
.UnitTesting
;
12 namespace System
.ComponentModel
.Composition
15 public class CompositionResultOfTTest
18 public void Constructor1_ShouldSetErrorsPropertyToEmptyEnumerable()
20 var result
= new CompositionResult
<string>();
22 EnumerableAssert
.IsEmpty(result
.Errors
);
26 public void Constructor2_ShouldSetErrorsPropertyToEmptyEnumerable()
28 var result
= new CompositionResult
<string>("Value");
30 EnumerableAssert
.IsEmpty(result
.Errors
);
34 public void Constructor3_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable()
36 var result
= new CompositionResult
<string>((CompositionError
[])null);
38 EnumerableAssert
.IsEmpty(result
.Errors
);
42 public void Constructor4_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable()
44 var result
= new CompositionResult
<string>((IEnumerable
<CompositionError
>)null);
46 EnumerableAssert
.IsEmpty(result
.Errors
);
50 public void Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable()
52 var result
= new CompositionResult
<string>("Value", (IEnumerable
<CompositionError
>)null);
54 EnumerableAssert
.IsEmpty(result
.Errors
);
58 public void Constructor3_EmptyAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable()
60 var result
= new CompositionResult
<string>(new CompositionError
[0]);
62 EnumerableAssert
.IsEmpty(result
.Errors
);
66 public void Constructor4_EmptyAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable()
68 var result
= new CompositionResult
<string>(Enumerable
.Empty
<CompositionError
>());
70 EnumerableAssert
.IsEmpty(result
.Errors
);
74 public void Constructor5_EmptyAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable()
76 var result
= new CompositionResult
<string>("Value", Enumerable
.Empty
<CompositionError
>());
78 EnumerableAssert
.IsEmpty(result
.Errors
);
82 public void Constructor3_ValuesAsErrorsArgument_ShouldSetErrorsProperty()
84 var errors
= Expectations
.GetCompositionErrors();
86 foreach (var e
in errors
)
88 var result
= new CompositionResult
<string>(e
.ToArray());
90 EnumerableAssert
.AreEqual(e
, result
.Errors
);
95 public void Constructor4_ValuesAsErrorsArgument_ShouldSetErrorsProperty()
97 var errors
= Expectations
.GetCompositionErrors();
99 foreach (var e
in errors
)
101 var result
= new CompositionResult
<string>(e
);
103 EnumerableAssert
.AreEqual(e
, result
.Errors
);
108 public void Constructor5_ValuesAsErrorsArgument_ShouldSetErrorsProperty()
110 var errors
= Expectations
.GetCompositionErrors();
112 foreach (var e
in errors
)
114 var result
= new CompositionResult
<string>("Value", e
);
116 EnumerableAssert
.AreEqual(e
, result
.Errors
);
121 public void Constructor1_ShouldSetSucceededPropertyToTrue()
123 var result
= new CompositionResult
<string>();
125 Assert
.IsTrue(result
.Succeeded
);
130 public void Constructor2_ShouldSetSucceededPropertyToTrue()
132 var result
= new CompositionResult
<string>("Value");
134 Assert
.IsTrue(result
.Succeeded
);
138 public void Constructor3_NullAsErrorsArgument_ShouldSetSucceededPropertyToTrue()
140 var result
= new CompositionResult
<string>((CompositionError
[])null);
142 Assert
.IsTrue(result
.Succeeded
);
146 public void Constructor4_NullAsErrorsArgument_ShouldSetSucceededPropertyToTrue()
148 var result
= new CompositionResult
<string>((IEnumerable
<CompositionError
>)null);
150 Assert
.IsTrue(result
.Succeeded
);
154 public void Constructor5_NullAsErrorsArgument_ShouldSetSucceededPropertyToTrue()
156 var result
= new CompositionResult
<string>("Value", (IEnumerable
<CompositionError
>)null);
158 Assert
.IsTrue(result
.Succeeded
);
162 public void Constructor3_EmptyAsErrorsArgument_ShouldSetSucceededPropertyToTrue()
164 var result
= new CompositionResult
<string>(new CompositionError
[0]);
166 Assert
.IsTrue(result
.Succeeded
);
170 public void Constructor4_EmptyAsErrorsArgument_ShouldSetSucceededPropertyToTrue()
172 var result
= new CompositionResult
<string>(Enumerable
.Empty
<CompositionError
>());
174 Assert
.IsTrue(result
.Succeeded
);
178 public void Constructor5_EmptyAsErrorsArgument_ShouldSetSucceededPropertyToTrue()
180 var result
= new CompositionResult
<string>("Value", Enumerable
.Empty
<CompositionError
>());
182 Assert
.IsTrue(result
.Succeeded
);
186 public void Constructor3_ValuesAsErrorsArgument_ShouldSetSucceededPropertyToTrueIfThereAreErrors()
188 var errors
= Expectations
.GetCompositionErrors();
190 foreach (var e
in errors
)
192 var result
= new CompositionResult
<string>(e
.ToArray());
196 Assert
.IsFalse(result
.Succeeded
);
200 Assert
.IsTrue(result
.Succeeded
);
206 public void Constructor4_ValuesAsErrorsArgument_ShouldSetSucceededPropertyToTrueIfThereAreErrors()
208 var errors
= Expectations
.GetCompositionErrors();
210 foreach (var e
in errors
)
212 var result
= new CompositionResult
<string>(e
);
216 Assert
.IsFalse(result
.Succeeded
);
220 Assert
.IsTrue(result
.Succeeded
);
226 public void Constructor5_ValuesAsErrorsArgument_ShouldSetSucceededPropertyToTrueIfThereAreErrors()
228 var errors
= Expectations
.GetCompositionErrors();
230 foreach (var e
in errors
)
232 var result
= new CompositionResult
<string>("Value", e
);
236 Assert
.IsFalse(result
.Succeeded
);
240 Assert
.IsTrue(result
.Succeeded
);
246 public void ToResult_NullAsErrorsArgument_ShouldReturnResultWithEmptyErrorsProperty()
248 var result
= CreateCompositionResult
<string>((IEnumerable
<CompositionError
>)null);
250 var copy
= result
.ToResult();
252 EnumerableAssert
.IsEmpty(copy
.Errors
);
256 public void ToResult_EmptyEnumerableAsErrorsArgument_ShouldReturnResultWithEmptyErrorsProperty()
258 var result
= CreateCompositionResult
<string>(Enumerable
.Empty
<CompositionError
>());
260 var copy
= result
.ToResult();
262 EnumerableAssert
.IsEmpty(copy
.Errors
);
266 public void ToResult_ValueAsErrorsArgument_ShouldReturnResultWithErrorsPropertySet()
268 var expectations
= Expectations
.GetCompositionErrors();
270 foreach (var e
in expectations
)
272 var result
= CreateCompositionResult
<string>(e
);
274 var copy
= result
.ToResult();
276 EnumerableAssert
.AreSequenceSame(result
.Errors
, copy
.Errors
);
281 public void ToResultOfT_NullAsErrorsArgument_ShouldReturnResultWithEmptyErrorsProperty()
283 var result
= CreateCompositionResult
<string>((IEnumerable
<CompositionError
>)null);
285 var copy
= result
.ToResult
<string>();
287 EnumerableAssert
.IsEmpty(copy
.Errors
);
291 public void ToResultOfT_EmptyEnumerableAsErrorsArgument_ShouldReturnResultWithEmptyErrorsProperty()
293 var result
= CreateCompositionResult
<string>(Enumerable
.Empty
<CompositionError
>());
295 var copy
= result
.ToResult
<string>();
297 EnumerableAssert
.IsEmpty(copy
.Errors
);
301 public void ToResultOfT_ValueAsErrorsArgument_ShouldReturnResultWithErrorsPropertySet()
303 var expectations
= Expectations
.GetCompositionErrors();
305 foreach (var e
in expectations
)
307 var result
= CreateCompositionResult
<string>(e
);
309 var copy
= result
.ToResult
<string>();
311 EnumerableAssert
.AreSequenceSame(result
.Errors
, copy
.Errors
);
316 public void ToResultOfT_ReferenceValueAsValueArgument_ShouldReturnResultWithNullValueProperty()
318 var expectations
= Expectations
.GetObjectsReferenceTypes();
320 foreach (var e
in expectations
)
322 var result
= CreateCompositionResult
<object>(e
);
324 var copy
= result
.ToResult
<object>();
326 Assert
.IsNull(copy
.Value
);
331 public void ToResultOfT_ValueTypeValueAsValueArgument_ShouldReturnResultWithNullValueProperty()
333 var expectations
= Expectations
.GetObjectsValueTypes();
335 foreach (var e
in expectations
)
337 var result
= CreateCompositionResult
<ValueType
>(e
);
339 var copy
= result
.ToResult
<ValueType
>();
341 Assert
.IsNull(copy
.Value
);
346 public void Value_NullAsErrorsArgumentAndValueAsValueArgument_ShouldReturnValue()
348 var expectations
= Expectations
.GetObjectsReferenceTypes();
350 foreach (var e
in expectations
)
352 var result
= CreateCompositionResult
<object>(e
, (IEnumerable
<CompositionError
>)null);
354 Assert
.AreEqual(e
, result
.Value
);
359 public void Value_EmptyEnumerableAsErrorsArgumentAndValueAsValueArgument_ShouldReturnValue()
361 var expectations
= Expectations
.GetObjectsReferenceTypes();
363 foreach (var e
in expectations
)
365 var result
= CreateCompositionResult
<object>(e
, Enumerable
.Empty
<CompositionError
>());
367 Assert
.AreEqual(e
, result
.Value
);
372 public void Value_SingleValueAsErrorsArgument_ShouldThrowComposition()
374 var errorIds
= Expectations
.GetEnumValues
<CompositionErrorId
>();
376 foreach (var errorId
in errorIds
)
378 var result
= CreateCompositionResult
<string>(errorId
);
380 CompositionAssert
.ThrowsError((ErrorId
)errorId
, () =>
382 var value = result
.Value
;
388 public void Value_TwoSameValuesAsErrorsArgument_ShouldThrowComposition()
390 var errorIds
= Expectations
.GetEnumValues
<CompositionErrorId
>();
392 foreach (var errorId
in errorIds
)
394 var result
= CreateCompositionResult
<string>(errorId
, errorId
);
396 CompositionAssert
.ThrowsErrors((ErrorId
)errorId
, (ErrorId
)errorId
, () =>
398 var value = result
.Value
;
404 public void Value_TwoDifferentValuesAsErrorsArgument_ShouldThrowComposition()
406 var errorIds1
= Expectations
.GetEnumValues
<CompositionErrorId
>();
407 var errorIds2
= Expectations
.GetEnumValues
<CompositionErrorId
>();
409 for (int i
= 0; i
< errorIds1
.Count(); i
++)
411 var errorId1
= errorIds1
.ElementAt(i
);
412 var errorId2
= errorIds1
.ElementAt(errorIds2
.Count() - 1 - i
);
414 var result
= CreateCompositionResult
<string>(errorId1
, errorId2
);
416 CompositionAssert
.ThrowsErrors((ErrorId
)errorId1
, (ErrorId
)errorId2
, () =>
418 var value = result
.Value
;
423 private CompositionResult
<T
> CreateCompositionResult
<T
>(params CompositionErrorId
[] errorIds
)
425 return new CompositionResult
<T
>(errorIds
.Select(id
=>
427 return ErrorFactory
.Create(id
);
431 private CompositionResult
<T
> CreateCompositionResult
<T
>(int count
)
433 var expectations
= Expectations
.GetEnumValues
<CompositionErrorId
>();
435 List
<CompositionError
> errors
= new List
<CompositionError
>();
437 foreach (var e
in expectations
.Take(count
))
439 errors
.Add(ErrorFactory
.Create(e
));
442 return CreateCompositionResult
<T
>(errors
);
445 private CompositionResult
<T
> CreateCompositionResult
<T
>(IEnumerable
<CompositionError
> errors
)
447 return new CompositionResult
<T
>(errors
);
450 private CompositionResult
<T
> CreateCompositionResult
<T
>(T
value)
452 return new CompositionResult
<T
>(value);
455 private CompositionResult
<T
> CreateCompositionResult
<T
>(T
value, IEnumerable
<CompositionError
> errors
)
457 return new CompositionResult
<T
>(value, errors
);