1 // ServiceContainerTest.cs - NUnit Test Cases for System.ComponentModel.Design.ServiceContainer
3 // Alexandre Pigolkine (pigolkine@gmx.de)
5 // (C) Alexandre Pigolkine (pigolkine@gmx.de)
11 using System.ComponentModel.Design;
12 using System.Collections;
14 using NUnit.Framework;
16 namespace MonoTests.System.ComponentModel.Design
31 private static int objectsCreatedByCallback;
33 public static int TotalObjectsCreatedByCallback {
34 get { return objectsCreatedByCallback; }
37 public static void Reset ()
39 objectsCreatedByCallback = 0;
42 public static object ServiceCreator (IServiceContainer isc, Type tp)
44 Assert.AreEqual (typeof (Svc), tp, "ServiceCreator#01");
45 ++objectsCreatedByCallback;
51 public class ServiceContainerTest
60 public void AddService1 ()
63 ServiceContainer parent;
66 object serviceInstance1 = new ArrayList ();
67 object serviceInstance2 = new Hashtable ();
68 object callback1 = new ServiceCreatorCallback (
71 sc = new ServiceContainer ();
72 sc.AddService (typeof (ICollection), serviceInstance1);
73 sc.AddService (typeof (IEnumerable), serviceInstance2);
74 sc.AddService (typeof (Svc), callback1);
76 service = sc.GetService (typeof (ICollection));
77 Assert.IsNotNull (service, "#A1");
78 Assert.AreSame (serviceInstance1, service, "#A2");
80 service = sc.GetService (typeof (IEnumerable));
81 Assert.IsNotNull (service, "#B1");
82 Assert.AreSame (serviceInstance2, service, "#B2");
84 service = sc.GetService (typeof (ArrayList));
85 Assert.IsNull (service, "#C1");
87 service = sc.GetService (typeof (ICloneable));
88 Assert.IsNull (service, "#D1");
90 Assert.AreEqual (0, Svc.TotalObjectsCreatedByCallback, "#E1");
91 service = sc.GetService (typeof (Svc));
92 Assert.IsNotNull (service, "#E2");
93 Assert.IsTrue (service is Svc, "#E3");
94 Assert.AreEqual (1, Svc.TotalObjectsCreatedByCallback, "#E4");
95 Assert.AreSame (service, sc.GetService (typeof (Svc)), "#E5");
96 Assert.AreEqual (1, Svc.TotalObjectsCreatedByCallback, "#E6");
98 parent = new ServiceContainer ();
99 sc = new ServiceContainer (parent);
101 sc.AddService (typeof (ICollection), serviceInstance1);
103 Assert.AreSame (serviceInstance1, sc.GetService (typeof (ICollection)), "#F1");
104 Assert.IsNull (parent.GetService (typeof (ICollection)), "#F2");
108 public void AddService1_Disposed ()
113 object serviceInstance1 = new ArrayList ();
114 object serviceInstance2 = new Hashtable ();
116 sc = new ServiceContainer ();
117 sc.AddService (typeof (ICollection), serviceInstance1);
118 service = sc.GetService (typeof (ICollection));
119 Assert.IsNotNull (service, "#A1");
120 Assert.AreSame (serviceInstance1, service, "#A2");
124 service = sc.GetService (typeof (ICollection));
125 Assert.IsNull (service, "#B");
127 sc.AddService (typeof (ICollection), serviceInstance2);
128 service = sc.GetService (typeof (ICollection));
129 Assert.IsNotNull (service, "#C1");
130 Assert.AreSame (serviceInstance2, service, "#C2");
133 [Test] // AddService (Type, Object)
134 public void AddService1_ServiceInstance_Null ()
136 ServiceContainer sc = new ServiceContainer ();
139 sc.AddService (typeof (IList), (object) null);
141 } catch (ArgumentNullException ex) {
142 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
143 Assert.IsNull (ex.InnerException, "#3");
144 Assert.IsNotNull (ex.Message, "#4");
145 Assert.AreEqual ("serviceInstance", ex.ParamName, "#5");
150 public void AddService1_ServiceType_Exists ()
152 ServiceContainer sc = new ServiceContainer ();
154 Svc serviceInstance1 = new Svc ();
155 Svc serviceInstance2 = new Svc ();
157 sc.AddService (typeof (Svc), serviceInstance1);
158 Assert.AreSame (serviceInstance1, sc.GetService (typeof (Svc)), "#A");
161 sc.AddService (typeof (Svc), serviceInstance1);
163 } catch (ArgumentException ex) {
164 // The service MonoTests.System.ComponentModel.Design.Svc
165 // already exists in the service container
166 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
167 Assert.IsNull (ex.InnerException, "#B3");
168 Assert.IsNotNull (ex.Message, "#B4");
169 Assert.IsTrue (ex.Message.IndexOf (typeof (Svc).FullName) != -1, "#B5");
170 Assert.AreEqual ("serviceType", ex.ParamName, "#B6");
174 sc.AddService (typeof (Svc), serviceInstance2);
176 } catch (ArgumentException ex) {
177 // The service MonoTests.System.ComponentModel.Design.Svc
178 // already exists in the service container
179 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
180 Assert.IsNull (ex.InnerException, "#C3");
181 Assert.IsNotNull (ex.Message, "#C4");
182 Assert.IsTrue (ex.Message.IndexOf (typeof (Svc).FullName) != -1, "#C5");
183 Assert.AreEqual ("serviceType", ex.ParamName, "#C6");
187 [Test] // AddService (Type, Object)
188 public void AddService1_ServiceType_Null ()
190 ServiceContainer sc = new ServiceContainer ();
193 sc.AddService ((Type) null, new ArrayList ());
195 } catch (ArgumentNullException ex) {
196 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
197 Assert.IsNull (ex.InnerException, "#3");
198 Assert.IsNotNull (ex.Message, "#4");
199 Assert.AreEqual ("serviceType", ex.ParamName, "#5");
203 [Test] // AddService (Type, ServiceCreatorCallback)
204 public void AddService2_Callback_Null ()
206 ServiceContainer sc = new ServiceContainer ();
207 ServiceCreatorCallback callback = null;
210 sc.AddService (typeof (IList), callback);
212 } catch (ArgumentNullException ex) {
213 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
214 Assert.IsNull (ex.InnerException, "#3");
215 Assert.IsNotNull (ex.Message, "#4");
216 Assert.AreEqual ("callback", ex.ParamName, "#5");
220 [Test] // AddService (Type, ServiceCreatorCallback)
221 public void AddService2_Disposed ()
226 object callback = new ServiceCreatorCallback (
229 sc = new ServiceContainer ();
230 sc.AddService (typeof (Svc), callback);
231 service = sc.GetService (typeof (Svc));
232 Assert.IsNotNull (service, "#A");
236 service = sc.GetService (typeof (Svc));
237 Assert.IsNull (service, "#B");
239 sc.AddService (typeof (Svc), callback);
240 service = sc.GetService (typeof (Svc));
241 Assert.IsNotNull (service, "#C");
244 [Test] // AddService (Type, ServiceCreatorCallback)
245 public void AddService2_ServiceType_Null ()
247 ServiceContainer sc = new ServiceContainer ();
248 ServiceCreatorCallback callback = new ServiceCreatorCallback (
252 sc.AddService ((Type) null, callback);
254 } catch (ArgumentNullException ex) {
255 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
256 Assert.IsNull (ex.InnerException, "#3");
257 Assert.IsNotNull (ex.Message, "#4");
258 Assert.AreEqual ("serviceType", ex.ParamName, "#5");
262 [Test] // AddService (Type, Object, Boolean)
263 public void AddService3 ()
266 ServiceContainer parent = new ServiceContainer ();
268 ArrayList serviceInstance1 = new ArrayList ();
269 ArrayList serviceInstance2 = new ArrayList ();
271 Type serviceType1 = typeof (IList);
272 Type serviceType2 = typeof (IEnumerable);
274 sc = new ServiceContainer (parent);
275 sc.AddService (serviceType1, serviceInstance1, true);
276 sc.AddService (serviceType2, serviceInstance2, false);
278 Assert.AreSame (serviceInstance1, parent.GetService (serviceType1), "#A1");
279 Assert.IsNull (parent.GetService (serviceType2), "#A2");
280 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#A3");
281 Assert.AreSame (serviceInstance2, sc.GetService (serviceType2), "#A4");
283 sc = new ServiceContainer ();
284 sc.AddService (serviceType1, serviceInstance1, true);
285 sc.AddService (serviceType2, serviceInstance2, false);
287 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#B1");
288 Assert.AreSame (serviceInstance2, sc.GetService (serviceType2), "#B2");
290 parent = new ServiceContainer ();
291 sc = new ServiceContainer (parent);
292 sc.AddService (serviceType1, serviceInstance1, true);
293 sc.AddService (serviceType1, serviceInstance2, false);
295 Assert.AreSame (serviceInstance2, sc.GetService (serviceType1), "#C1");
296 Assert.AreSame (serviceInstance1, parent.GetService (serviceType1), "#C2");
299 [Test] // AddService (Type, Object, Boolean)
300 public void AddService3_Disposed ()
303 ServiceContainer parent = new ServiceContainer ();
305 ArrayList serviceInstance1 = new ArrayList ();
306 ArrayList serviceInstance2 = new ArrayList ();
308 Type serviceType1 = typeof (IList);
309 Type serviceType2 = typeof (IEnumerable);
311 sc = new ServiceContainer (parent);
312 sc.AddService (serviceType1, serviceInstance1, true);
313 sc.AddService (serviceType2, serviceInstance2, false);
317 Assert.AreSame (serviceInstance1, parent.GetService (serviceType1), "#A1");
318 Assert.IsNull (parent.GetService (serviceType2), "#A2");
319 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#A3");
320 Assert.IsNull (sc.GetService (serviceType2), "#A4");
322 sc.AddService (serviceType2, serviceInstance2, false);
324 Assert.AreSame (serviceInstance1, parent.GetService (serviceType1), "#B1");
325 Assert.IsNull (parent.GetService (serviceType2), "#B2");
326 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#B3");
327 Assert.AreSame (serviceInstance2, sc.GetService (serviceType2), "#B4");
330 [Test] // AddService (Type, Object, Boolean)
331 public void AddService3_ServiceInstance_Null ()
333 ServiceContainer sc = new ServiceContainer ();
336 sc.AddService (typeof (IList), (object) null, false);
338 } catch (ArgumentNullException ex) {
339 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
340 Assert.IsNull (ex.InnerException, "#A3");
341 Assert.IsNotNull (ex.Message, "#A4");
342 Assert.AreEqual ("serviceInstance", ex.ParamName, "#A5");
346 sc.AddService (typeof (IList), (object) null, true);
348 } catch (ArgumentNullException ex) {
349 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
350 Assert.IsNull (ex.InnerException, "#B3");
351 Assert.IsNotNull (ex.Message, "#B4");
352 Assert.AreEqual ("serviceInstance", ex.ParamName, "#B5");
356 [Test] // AddService (Type, Object, Boolean)
357 public void AddService3_ServiceType_Null ()
359 ServiceContainer sc = new ServiceContainer ();
362 sc.AddService ((Type) null, new ArrayList (), false);
364 } catch (ArgumentNullException ex) {
365 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
366 Assert.IsNull (ex.InnerException, "#A3");
367 Assert.IsNotNull (ex.Message, "#A4");
368 Assert.AreEqual ("serviceType", ex.ParamName, "#A5");
372 sc.AddService ((Type) null, new ArrayList (), true);
374 } catch (ArgumentNullException ex) {
375 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
376 Assert.IsNull (ex.InnerException, "#B3");
377 Assert.IsNotNull (ex.Message, "#B4");
378 Assert.AreEqual ("serviceType", ex.ParamName, "#B5");
382 [Test] // AddService (Type, ServiceCreatorCallback, Boolean)
383 public void AddService4_Callback_Null ()
385 ServiceContainer sc = new ServiceContainer ();
386 ServiceCreatorCallback callback = null;
389 sc.AddService (typeof (IList), callback, false);
391 } catch (ArgumentNullException ex) {
392 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
393 Assert.IsNull (ex.InnerException, "#A3");
394 Assert.IsNotNull (ex.Message, "#A4");
395 Assert.AreEqual ("callback", ex.ParamName, "#A5");
399 sc.AddService (typeof (IList), callback, true);
401 } catch (ArgumentNullException ex) {
402 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
403 Assert.IsNull (ex.InnerException, "#B3");
404 Assert.IsNotNull (ex.Message, "#B4");
405 Assert.AreEqual ("callback", ex.ParamName, "#B5");
409 [Test] // AddService (Type, ServiceCreatorCallback, Boolean)
410 public void AddService4_ServiceType_Null ()
412 ServiceContainer sc = new ServiceContainer ();
413 ServiceCreatorCallback callback = new ServiceCreatorCallback (
417 sc.AddService ((Type) null, callback, false);
419 } catch (ArgumentNullException ex) {
420 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
421 Assert.IsNull (ex.InnerException, "#A3");
422 Assert.IsNotNull (ex.Message, "#A4");
423 Assert.AreEqual ("serviceType", ex.ParamName, "#A5");
427 sc.AddService ((Type) null, callback, true);
429 } catch (ArgumentNullException ex) {
430 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
431 Assert.IsNull (ex.InnerException, "#B3");
432 Assert.IsNotNull (ex.Message, "#B4");
433 Assert.AreEqual ("serviceType", ex.ParamName, "#B5");
438 public void GeneralTest1 ()
440 ServiceContainer sc = new ServiceContainer ();
442 sc.AddService (typeof (Svc), new Svc ());
443 Svc service1 = sc.GetService (typeof (Svc)) as Svc;
444 Assert.IsNotNull (service1, "#1");
445 Assert.AreEqual (service1, sc.GetService (typeof (Svc)), "#2");
446 Assert.IsNull (sc.GetService (typeof (NotInSvc)), "#3");
450 public void GeneralTest2 ()
452 ServiceContainer sc = new ServiceContainer ();
454 sc.AddService (typeof (Svc), new Svc ());
455 Svc service1 = sc.GetService (typeof (Svc)) as Svc;
456 Assert.IsNotNull (service1, "#A");
457 Assert.AreEqual (service1, sc.GetService (typeof (Svc)), "#2");
460 sc.AddService (typeof (Svc), new Svc ());
462 } catch (ArgumentException ex) {
463 // The service MonoTests.System.ComponentModel.Design.Svc
464 // already exists in the service container
465 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
466 Assert.IsNull (ex.InnerException, "#B3");
467 Assert.IsNotNull (ex.Message, "#B4");
468 Assert.IsTrue (ex.Message.IndexOf (typeof (Svc).FullName) != -1, "#B5");
469 Assert.AreEqual ("serviceType", ex.ParamName, "#B6");
474 public void GetService_DefaultServices ()
476 ServiceContainer sc1 = new ServiceContainer ();
478 Assert.AreSame (sc1, sc1.GetService (typeof (IServiceContainer)), "#A1");
479 Assert.AreSame (sc1, sc1.GetService (typeof(ServiceContainer)), "#A2");
481 ServiceContainer sc2 = new ServiceContainer ();
482 sc1.AddService (typeof (IServiceContainer), sc2);
483 sc1.AddService (typeof (ServiceContainer), sc2);
485 Assert.AreSame (sc1, sc1.GetService (typeof (IServiceContainer)), "#B1");
486 Assert.AreSame (sc1, sc1.GetService (typeof(ServiceContainer)), "#B2");
490 public void TestServiceCreator ()
492 ServiceContainer sc = new ServiceContainer ();
493 sc.AddService (typeof(Svc), new ServiceCreatorCallback (Svc.ServiceCreator));
494 Assert.IsNull (sc.GetService (typeof (NotInSvc)), "#A");
496 Svc service1 = sc.GetService (typeof (Svc)) as Svc;
497 Assert.IsNotNull (service1, "#B1");
498 Assert.AreEqual (1, Svc.TotalObjectsCreatedByCallback, "#B2");
500 Svc service2 = sc.GetService (typeof (Svc)) as Svc;
501 Assert.AreEqual (service1, service2, "#C1");
502 Assert.AreEqual (1, Svc.TotalObjectsCreatedByCallback, "#C2");
506 public void ParentService ()
508 ServiceContainer scParent = new ServiceContainer ();
509 ServiceContainer sc = new ServiceContainer (scParent);
511 scParent.AddService(typeof(Svc), new Svc ());
513 Svc service1 = sc.GetService (typeof (Svc)) as Svc;
514 Assert.IsNotNull (service1, "#1");
517 [Test] // RemoveService (Type)
518 public void RemoveService1 ()
521 ServiceContainer parent;
523 ArrayList serviceInstance1 = new ArrayList ();
524 ArrayList serviceInstance2 = new ArrayList ();
526 Type serviceType1 = typeof (IList);
527 Type serviceType2 = typeof (IEnumerable);
530 sc = new ServiceContainer (parent);
531 sc.AddService (serviceType1, serviceInstance1);
532 sc.AddService (serviceType2, serviceInstance2);
534 sc.RemoveService (typeof (DateTime));
536 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#A1");
537 Assert.AreSame (serviceInstance2, sc.GetService (serviceType2), "#A2");
539 sc.RemoveService (serviceType2);
541 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#B1");
542 Assert.IsNull (sc.GetService (serviceType2), "#B2");
544 sc.RemoveService (serviceType1);
546 Assert.IsNull (sc.GetService (serviceType1), "#C1");
547 Assert.IsNull (sc.GetService (serviceType2), "#C2");
549 sc.AddService (serviceType1, serviceInstance1);
550 sc.AddService (serviceType2, serviceInstance2);
552 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#D1");
553 Assert.AreSame (serviceInstance2, sc.GetService (serviceType2), "#D2");
555 parent = new ServiceContainer ();
556 sc = new ServiceContainer (parent);
557 sc.AddService (serviceType1, serviceInstance1, true);
558 sc.AddService (serviceType2, serviceInstance2, false);
560 sc.RemoveService (serviceType1);
562 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#E1");
563 Assert.AreSame (serviceInstance2, sc.GetService (serviceType2), "#E2");
565 sc.RemoveService (serviceType2);
567 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#F1");
568 Assert.IsNull (sc.GetService (serviceType2), "#F2");
570 parent.RemoveService (serviceType1);
572 Assert.IsNull (sc.GetService (serviceType1), "#G1");
573 Assert.IsNull (sc.GetService (serviceType2), "#G2");
575 parent = new ServiceContainer ();
576 sc = new ServiceContainer (parent);
577 sc.AddService (serviceType1, serviceInstance1, true);
578 sc.AddService (serviceType1, serviceInstance2, false);
580 sc.RemoveService (serviceType1);
582 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#H1");
583 Assert.AreSame (serviceInstance1, parent.GetService (serviceType1), "#H2");
585 sc.RemoveService (serviceType1);
587 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#I1");
588 Assert.AreSame (serviceInstance1, parent.GetService (serviceType1), "#I2");
590 parent.RemoveService (serviceType1);
592 Assert.IsNull (sc.GetService (serviceType1), "#J1");
593 Assert.IsNull (parent.GetService (serviceType1), "#J2");
595 parent = new ServiceContainer ();
596 sc = new ServiceContainer (parent);
597 sc.AddService (serviceType1, serviceInstance1, true);
598 sc.AddService (serviceType1, serviceInstance2, false);
600 parent.RemoveService (serviceType1);
602 Assert.AreSame (serviceInstance2, sc.GetService (serviceType1), "#K1");
603 Assert.IsNull (parent.GetService (serviceType1), "#K2");
606 [Test] // RemoveService (Type)
607 public void RemoveService1_Disposed ()
610 ServiceContainer parent;
612 ArrayList serviceInstance1 = new ArrayList ();
614 Type serviceType1 = typeof (IList);
617 sc = new ServiceContainer (parent);
618 sc.AddService (serviceType1, serviceInstance1);
621 sc.RemoveService (typeof (DateTime));
624 [Test] // RemoveService (Type)
625 public void RemoveService1_ServiceType_Null ()
627 ServiceContainer sc = new ServiceContainer ();
630 sc.RemoveService ((Type) null);
632 } catch (ArgumentNullException ex) {
633 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
634 Assert.IsNull (ex.InnerException, "#3");
635 Assert.IsNotNull (ex.Message, "#4");
636 Assert.AreEqual ("serviceType", ex.ParamName, "#5");
640 [Test] // RemoveService (Type, Boolean)
641 public void RemoveService2 ()
644 ServiceContainer parent;
646 ArrayList serviceInstance1 = new ArrayList ();
647 ArrayList serviceInstance2 = new ArrayList ();
649 Type serviceType1 = typeof (IList);
650 Type serviceType2 = typeof (IEnumerable);
652 parent = new ServiceContainer ();
653 sc = new ServiceContainer (parent);
654 sc.AddService (serviceType1, serviceInstance1, true);
655 sc.AddService (serviceType2, serviceInstance2, false);
657 sc.RemoveService (serviceType1, false);
658 sc.RemoveService (serviceType2, false);
660 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#A1");
661 Assert.IsNull (sc.GetService (serviceType2), "#A2");
663 sc.RemoveService (serviceType1, true);
664 sc.RemoveService (serviceType2, true);
666 Assert.IsNull (sc.GetService (serviceType1), "#B1");
667 Assert.IsNull (sc.GetService (serviceType2), "#B2");
669 sc.AddService (serviceType1, serviceInstance1, true);
670 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#C1");
671 parent.RemoveService (serviceType1);
672 Assert.IsNull (sc.GetService (serviceType1), "#C2");
674 parent = new ServiceContainer ();
675 sc = new ServiceContainer (parent);
676 sc.AddService (serviceType1, serviceInstance1, true);
677 sc.AddService (serviceType2, serviceInstance2, false);
679 sc.RemoveService (serviceType1, true);
680 sc.RemoveService (serviceType2, true);
682 Assert.IsNull (sc.GetService (serviceType1), "#D1");
683 Assert.AreSame (serviceInstance2, sc.GetService (serviceType2), "#D2");
685 sc = new ServiceContainer ();
686 sc.AddService (serviceType1, serviceInstance1, true);
687 sc.RemoveService (serviceType1, true);
688 Assert.IsNull (sc.GetService (serviceType1), "#E");
690 parent = new ServiceContainer ();
691 sc = new ServiceContainer (parent);
692 sc.AddService (serviceType1, serviceInstance1, true);
693 sc.AddService (serviceType1, serviceInstance2, false);
695 sc.RemoveService (serviceType1, true);
697 Assert.AreSame (serviceInstance2, sc.GetService (serviceType1), "#F1");
698 Assert.IsNull (parent.GetService (serviceType1), "#F2");
700 sc.RemoveService (serviceType1, true);
702 Assert.AreSame (serviceInstance2, sc.GetService (serviceType1), "#G1");
703 Assert.IsNull (parent.GetService (serviceType1), "#G2");
705 sc.RemoveService (serviceType1, false);
707 Assert.IsNull (sc.GetService (serviceType1), "#H1");
708 Assert.IsNull (parent.GetService (serviceType1), "#H2");
711 [Test] // RemoveService (Type, Boolean)
712 public void RemoveService2_Disposed ()
715 ServiceContainer parent;
717 ArrayList serviceInstance1 = new ArrayList ();
718 ArrayList serviceInstance2 = new ArrayList ();
720 Type serviceType1 = typeof (IList);
721 Type serviceType2 = typeof (IEnumerable);
723 parent = new ServiceContainer ();
724 sc = new ServiceContainer (parent);
725 sc.AddService (serviceType1, serviceInstance1, true);
726 sc.AddService (serviceType2, serviceInstance2, false);
730 sc.RemoveService (serviceType1, false);
731 sc.RemoveService (serviceType2, false);
733 Assert.AreSame (serviceInstance1, sc.GetService (serviceType1), "#A1");
734 Assert.IsNull (sc.GetService (serviceType2), "#A2");
736 sc.RemoveService (serviceType1, true);
737 sc.RemoveService (serviceType2, true);
739 Assert.IsNull (sc.GetService (serviceType1), "#B1");
740 Assert.IsNull (sc.GetService (serviceType2), "#B2");
743 [Test] // RemoveService (Type, Boolean)
744 public void RemoveService2_ServiceType_Null ()
746 ServiceContainer sc = new ServiceContainer ();
749 sc.RemoveService ((Type) null, false);
751 } catch (ArgumentNullException ex) {
752 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
753 Assert.IsNull (ex.InnerException, "#A3");
754 Assert.IsNotNull (ex.Message, "#A4");
755 Assert.AreEqual ("serviceType", ex.ParamName, "#A5");
759 sc.RemoveService ((Type) null, true);
761 } catch (ArgumentNullException ex) {
762 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
763 Assert.IsNull (ex.InnerException, "#B3");
764 Assert.IsNotNull (ex.Message, "#B4");
765 Assert.AreEqual ("serviceType", ex.ParamName, "#B5");