PageRenderTime 44ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/Source/Bifrost.Specs/Execution/for_TypeImporter/TypeImporterSpecs.cs

#
C# | 64 lines | 59 code | 5 blank | 0 comment | 0 complexity | 86fb717c769a327b8198a2c2ad6c4888 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. using System;
  2. using Bifrost.Execution;
  3. using Moq;
  4. using NUnit.Framework;
  5. namespace Bifrost.Specs.Execution.for_TypeImporter
  6. {
  7. [TestFixture]
  8. public class TypeImporterSpecs
  9. {
  10. [Test]
  11. public void ImportingMultipleShouldReturnAllInstances()
  12. {
  13. var containerMock = new Mock<IContainer>();
  14. var typeDiscovererMock = new Mock<ITypeDiscoverer>();
  15. typeDiscovererMock.Setup(t => t.FindMultiple<IMultipleInterface>()).Returns(new[]
  16. {
  17. typeof(FirstMultipleClass),
  18. typeof(SecondMultipleClass)
  19. });
  20. var typeImporter = new TypeImporter(containerMock.Object, typeDiscovererMock.Object);
  21. var instances = typeImporter.ImportMany<IMultipleInterface>();
  22. Assert.That(instances.Length, Is.EqualTo(2));
  23. Assert.That(instances[0], Is.InstanceOf<FirstMultipleClass>());
  24. Assert.That(instances[1], Is.InstanceOf<SecondMultipleClass>());
  25. }
  26. [Test]
  27. public void ImportingMultipleAndThereIsOnlyOneShouldReturnThatInstance()
  28. {
  29. var containerMock = new Mock<IContainer>();
  30. var typeDiscovererMock = new Mock<ITypeDiscoverer>();
  31. typeDiscovererMock.Setup(t => t.FindMultiple<ISingleInterface>()).Returns(new[]
  32. {
  33. typeof(SingleClass),
  34. });
  35. var typeImporter = new TypeImporter(containerMock.Object, typeDiscovererMock.Object);
  36. var instances = typeImporter.ImportMany<ISingleInterface>();
  37. Assert.That(instances.Length, Is.EqualTo(1));
  38. Assert.That(instances[0], Is.InstanceOf<SingleClass>());
  39. }
  40. [Test, ExpectedException(typeof(ArgumentException))]
  41. public void ImportingMultipleAndDiscovererReturnsNullShouldCauseAnArgumentException()
  42. {
  43. var containerMock = new Mock<IContainer>();
  44. var typeDiscovererMock = new Mock<ITypeDiscoverer>();
  45. typeDiscovererMock.Setup(t => t.FindMultiple<IMultipleInterface>()).Returns((Type[])null);
  46. var typeImporter = new TypeImporter(containerMock.Object, typeDiscovererMock.Object);
  47. typeImporter.ImportMany<IMultipleInterface>();
  48. }
  49. [Test, ExpectedException(typeof(ArgumentException))]
  50. public void ImportingMultipleAndDiscovererThrowExceptionShouldCauseAnArgumentException()
  51. {
  52. var containerMock = new Mock<IContainer>();
  53. var typeDiscovererMock = new Mock<ITypeDiscoverer>();
  54. typeDiscovererMock.Setup(t => t.FindMultiple<IMultipleInterface>()).Throws(new ArgumentException());
  55. var typeImporter = new TypeImporter(containerMock.Object, typeDiscovererMock.Object);
  56. typeImporter.ImportMany<IMultipleInterface>();
  57. }
  58. }
  59. }