1 // ServiceContainerTest.cs - NUnit Test Cases for System.ComponentModel.Design.ServiceContainer
3 // Alexandre Pigolkine (pigolkine@gmx.de)
5 // (C) Alexandre Pigolkine (pigolkine@gmx.de)
10 using System.ComponentModel.Design;
12 namespace MonoTests.System.ComponentModel.Design
30 private static int objectsCreatedByCallback = 0;
32 public static int TotalObjectsCreatedByCallback {
33 get { return objectsCreatedByCallback; }
36 public static object ServiceCreator (IServiceContainer isc, Type tp)
38 Assertion.AssertEquals ("ServiceCreator#01", tp, typeof (Svc));
39 ++objectsCreatedByCallback;
45 public class ServiceContainerTest : Assertion {
48 public void GeneralTest1 ()
50 ServiceContainer sc = new ServiceContainer ();
52 sc.AddService (typeof (Svc), new Svc());
53 Svc service1 = sc.GetService (typeof (Svc)) as Svc;
54 AssertNotNull ("GT1#01", service1);
55 AssertEquals ("GT1#02", service1, sc.GetService (typeof (Svc)));
56 AssertNull ("GT1#04", sc.GetService (typeof (NotInSvc)));
59 [Test, ExpectedException (typeof (ArgumentException))]
60 public void GeneralTest2 ()
62 ServiceContainer sc = new ServiceContainer ();
64 sc.AddService (typeof (Svc), new Svc());
65 Svc service1 = sc.GetService (typeof (Svc)) as Svc;
66 AssertNotNull ("GT1#01", service1);
67 AssertEquals ("GT1#02", service1, sc.GetService (typeof (Svc)));
69 sc.AddService (typeof (Svc), new Svc());
73 public void TestServiceCreator ()
75 ServiceContainer sc = new ServiceContainer ();
76 sc.AddService(typeof(Svc), new ServiceCreatorCallback(Svc.ServiceCreator));
77 AssertNull ("TSC#01", sc.GetService (typeof(NotInSvc)));
79 Svc service1 = sc.GetService (typeof(Svc)) as Svc;
80 AssertNotNull ("TSC#02", service1);
81 AssertEquals ("TSC#03", Svc.TotalObjectsCreatedByCallback, 1);
83 Svc service2 = sc.GetService (typeof(Svc)) as Svc;
84 AssertEquals ("TSC#04", service2, service1);
85 AssertEquals ("TSC#05", Svc.TotalObjectsCreatedByCallback, 1);
89 public void TestParentService ()
91 ServiceContainer scParent = new ServiceContainer();
92 ServiceContainer sc = new ServiceContainer(scParent);
94 scParent.AddService(typeof(Svc), new Svc());
96 Svc service1 = sc.GetService (typeof(Svc)) as Svc;
97 AssertNotNull ("TPS#01", service1);