ServiceContainerTest.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. // ServiceContainerTest.cs - NUnit Test Cases for System.ComponentModel.Design.ServiceContainer
  2. //
  3. // Alexandre Pigolkine ([email protected])
  4. //
  5. // (C) Alexandre Pigolkine ([email protected])
  6. //
  7. using NUnit.Framework;
  8. using System;
  9. using System.ComponentModel.Design;
  10. namespace MonoTests.System.ComponentModel.Design
  11. {
  12. // Helper classes
  13. class NotInSvc
  14. {
  15. public NotInSvc()
  16. {
  17. }
  18. }
  19. class Svc
  20. {
  21. public Svc ()
  22. {
  23. }
  24. private static int objectsCreatedByCallback = 0;
  25. public static int TotalObjectsCreatedByCallback {
  26. get { return objectsCreatedByCallback; }
  27. }
  28. public static object ServiceCreator (IServiceContainer isc, Type tp)
  29. {
  30. Assertion.AssertEquals ("ServiceCreator#01", tp, typeof (Svc));
  31. ++objectsCreatedByCallback;
  32. return new Svc();
  33. }
  34. }
  35. [TestFixture]
  36. public class ServiceContainerTest : Assertion {
  37. [Test]
  38. public void GeneralTest1 ()
  39. {
  40. ServiceContainer sc = new ServiceContainer ();
  41. sc.AddService (typeof (Svc), new Svc());
  42. Svc service1 = sc.GetService (typeof (Svc)) as Svc;
  43. AssertNotNull ("GT1#01", service1);
  44. AssertEquals ("GT1#02", service1, sc.GetService (typeof (Svc)));
  45. AssertNull ("GT1#04", sc.GetService (typeof (NotInSvc)));
  46. }
  47. [Test, ExpectedException (typeof (ArgumentException))]
  48. public void GeneralTest2 ()
  49. {
  50. ServiceContainer sc = new ServiceContainer ();
  51. sc.AddService (typeof (Svc), new Svc());
  52. Svc service1 = sc.GetService (typeof (Svc)) as Svc;
  53. AssertNotNull ("GT1#01", service1);
  54. AssertEquals ("GT1#02", service1, sc.GetService (typeof (Svc)));
  55. sc.AddService (typeof (Svc), new Svc());
  56. }
  57. #if NET_2_0
  58. [Test]
  59. public void TestGetServiceDefaultServices ()
  60. {
  61. ServiceContainer sc = new ServiceContainer ();
  62. AssertEquals ("TGDS#01", sc.GetService (typeof(IServiceContainer)), sc);
  63. AssertEquals ("TGDS#02", sc.GetService (typeof(ServiceContainer)), sc);
  64. }
  65. #endif
  66. [Test]
  67. public void TestServiceCreator ()
  68. {
  69. ServiceContainer sc = new ServiceContainer ();
  70. sc.AddService(typeof(Svc), new ServiceCreatorCallback(Svc.ServiceCreator));
  71. AssertNull ("TSC#01", sc.GetService (typeof(NotInSvc)));
  72. Svc service1 = sc.GetService (typeof(Svc)) as Svc;
  73. AssertNotNull ("TSC#02", service1);
  74. AssertEquals ("TSC#03", Svc.TotalObjectsCreatedByCallback, 1);
  75. Svc service2 = sc.GetService (typeof(Svc)) as Svc;
  76. AssertEquals ("TSC#04", service2, service1);
  77. AssertEquals ("TSC#05", Svc.TotalObjectsCreatedByCallback, 1);
  78. }
  79. [Test]
  80. public void TestParentService ()
  81. {
  82. ServiceContainer scParent = new ServiceContainer();
  83. ServiceContainer sc = new ServiceContainer(scParent);
  84. scParent.AddService(typeof(Svc), new Svc());
  85. Svc service1 = sc.GetService (typeof(Svc)) as Svc;
  86. AssertNotNull ("TPS#01", service1);
  87. }
  88. }
  89. }