/src/CommonServiceLocator/CommonServiceLocator.LinFuAdapter.Tests/ServiceLocatorTestCase.cs

http://github.com/philiplaureano/LinFu · C# · 118 lines · 102 code · 16 blank · 0 comment · 0 complexity · 4b606c45c374672a53bf7e1586a79014 MD5 · raw file

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using CommonServiceLocator.LinFuAdapter.Components;
  4. using Microsoft.Practices.ServiceLocation;
  5. using NUnit.Framework;
  6. namespace CommonServiceLocator.LinFuAdapter.Tests
  7. {
  8. public abstract class ServiceLocatorTestCase
  9. {
  10. IServiceLocator _locator;
  11. [SetUp]
  12. public void SetUp()
  13. {
  14. _locator = CreateServiceLocator();
  15. }
  16. protected abstract IServiceLocator CreateServiceLocator();
  17. [Test]
  18. public void GetInstance()
  19. {
  20. ILogger instance = _locator.GetInstance<ILogger>();
  21. Assert.IsNotNull(instance, "instance should not be null");
  22. }
  23. [Test]
  24. [ExpectedException(typeof (ActivationException))]
  25. public void AskingForInvalidComponentShouldRaiseActivationException()
  26. {
  27. _locator.GetInstance<IDictionary>();
  28. }
  29. [Test]
  30. public void GetNamedInstance()
  31. {
  32. ILogger instance = _locator.GetInstance<ILogger>(typeof (AdvancedLogger).FullName);
  33. Assert.IsInstanceOfType(typeof (AdvancedLogger), instance, "Should be an advanced logger");
  34. }
  35. [Test]
  36. public void GetNamedInstance2()
  37. {
  38. ILogger instance = _locator.GetInstance<ILogger>(typeof (SimpleLogger).FullName);
  39. Assert.IsInstanceOfType(typeof (SimpleLogger), instance, "Should be a simple logger");
  40. }
  41. [Test]
  42. [ExpectedException(typeof (ActivationException))]
  43. public void GetNamedInstance_WithZeroLenName()
  44. {
  45. _locator.GetInstance<ILogger>("");
  46. }
  47. [Test]
  48. [ExpectedException(typeof (ActivationException))]
  49. public void GetUnknownInstance2()
  50. {
  51. _locator.GetInstance<ILogger>("test");
  52. }
  53. [Test]
  54. public void GetAllInstances()
  55. {
  56. IEnumerable<ILogger> instances = _locator.GetAllInstances<ILogger>();
  57. IList<ILogger> list = new List<ILogger>(instances);
  58. Assert.AreEqual(2, list.Count);
  59. }
  60. [Test]
  61. public void GetlAllInstance_ForUnknownType_ReturnEmptyEnumerable()
  62. {
  63. IEnumerable<IDictionary> instances = _locator.GetAllInstances<IDictionary>();
  64. IList<IDictionary> list = new List<IDictionary>(instances);
  65. Assert.AreEqual(0, list.Count);
  66. }
  67. [Test]
  68. public void GenericOverload_GetInstance()
  69. {
  70. Assert.AreEqual(
  71. _locator.GetInstance<ILogger>().GetType(),
  72. _locator.GetInstance(typeof (ILogger), null).GetType(),
  73. "should get the same type"
  74. );
  75. }
  76. [Test]
  77. public void GenericOverload_GetInstance_WithName()
  78. {
  79. Assert.AreEqual(
  80. _locator.GetInstance<ILogger>(typeof (AdvancedLogger).FullName).GetType(),
  81. _locator.GetInstance(typeof (ILogger), typeof (AdvancedLogger).FullName).GetType(),
  82. "should get the same type"
  83. );
  84. }
  85. [Test]
  86. public void Overload_GetInstance_NoName_And_NullName()
  87. {
  88. Assert.AreEqual(
  89. _locator.GetInstance<ILogger>().GetType(),
  90. _locator.GetInstance<ILogger>(null).GetType(),
  91. "should get the same type"
  92. );
  93. }
  94. [Test]
  95. public void GenericOverload_GetAllInstances()
  96. {
  97. List<ILogger> genericLoggers = new List<ILogger>(_locator.GetAllInstances<ILogger>());
  98. List<object> plainLoggers = new List<object>(_locator.GetAllInstances(typeof (ILogger)));
  99. CollectionAssert.AreEqual(genericLoggers, plainLoggers, "instance collections should be equal");
  100. }
  101. }
  102. }