ServiceContainerTest.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. [Test]
  58. public void TestServiceCreator ()
  59. {
  60. ServiceContainer sc = new ServiceContainer ();
  61. sc.AddService(typeof(Svc), new ServiceCreatorCallback(Svc.ServiceCreator));
  62. AssertNull ("TSC#01", sc.GetService (typeof(NotInSvc)));
  63. Svc service1 = sc.GetService (typeof(Svc)) as Svc;
  64. AssertNotNull ("TSC#02", service1);
  65. AssertEquals ("TSC#03", Svc.TotalObjectsCreatedByCallback, 1);
  66. Svc service2 = sc.GetService (typeof(Svc)) as Svc;
  67. AssertEquals ("TSC#04", service2, service1);
  68. AssertEquals ("TSC#05", Svc.TotalObjectsCreatedByCallback, 1);
  69. }
  70. [Test]
  71. public void TestParentService ()
  72. {
  73. ServiceContainer scParent = new ServiceContainer();
  74. ServiceContainer sc = new ServiceContainer(scParent);
  75. scParent.AddService(typeof(Svc), new Svc());
  76. Svc service1 = sc.GetService (typeof(Svc)) as Svc;
  77. AssertNotNull ("TPS#01", service1);
  78. }
  79. }
  80. }