PageRenderTime 39ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Ninject.Tests/Integration/ConstructorSelectionTests.cs

https://github.com/developingchris/ninject
C# | 90 lines | 78 code | 12 blank | 0 comment | 0 complexity | c8bd59e03b20b9ddd80dc330dae49b06 MD5 | raw file
  1. using Ninject.Parameters;
  2. using Ninject.Tests.Fakes;
  3. using Xunit;
  4. namespace Ninject.Tests.Integration
  5. {
  6. public class ConstructorSelectionTests
  7. {
  8. [Fact]
  9. public void DefaultCtorIsUsedWhenNoBindingAreAvailable()
  10. {
  11. using ( IKernel kernel = new StandardKernel() )
  12. {
  13. kernel.Bind<Barracks>().ToSelf();
  14. var barracks = kernel.Get<Barracks>();
  15. Assert.NotNull( barracks );
  16. Assert.Null( barracks.Warrior );
  17. Assert.Null( barracks.Weapon );
  18. }
  19. }
  20. [Fact]
  21. public void CtorIsUsedWhenParameterIsSupplied()
  22. {
  23. using(IKernel kernel = new StandardKernel())
  24. {
  25. kernel.Bind<Barracks>().ToSelf();
  26. var constructorArgument = new ConstructorArgument("warrior", new Samurai(new Sword()));
  27. var barracks = kernel.Get<Barracks>(constructorArgument);
  28. Assert.NotNull(barracks);
  29. Assert.NotNull(barracks.Warrior);
  30. Assert.NotNull(barracks.Warrior.Weapon);
  31. Assert.Null(barracks.Weapon);
  32. }
  33. }
  34. [Fact]
  35. public void FirstAvailableWithBindingAvailableIsUsed()
  36. {
  37. using ( IKernel kernel = new StandardKernel() )
  38. {
  39. kernel.Bind<Barracks>().ToSelf();
  40. kernel.Bind<IWeapon>().To<Sword>();
  41. var barracks = kernel.Get<Barracks>();
  42. Assert.NotNull( barracks );
  43. Assert.Null( barracks.Warrior );
  44. Assert.NotNull( barracks.Weapon );
  45. }
  46. }
  47. [Fact]
  48. public void CtorWithMostDependenciesIsUsedWhenBindingsAreAvailable()
  49. {
  50. using ( IKernel kernel = new StandardKernel() )
  51. {
  52. kernel.Bind<Barracks>().ToSelf();
  53. kernel.Bind<IWeapon>().To<Sword>();
  54. kernel.Bind<IWarrior>().To<Samurai>();
  55. var barracks = kernel.Get<Barracks>();
  56. Assert.NotNull( barracks );
  57. Assert.NotNull( barracks.Warrior );
  58. Assert.NotNull( barracks.Warrior.Weapon );
  59. Assert.NotNull( barracks.Weapon );
  60. }
  61. }
  62. [Fact]
  63. public void CreationWillFailIfAllDepenciesAreMissingAndInjectAttributeIsApplied()
  64. {
  65. using ( IKernel kernel = new StandardKernel() )
  66. {
  67. kernel.Bind<NinjaBarracks>().ToSelf();
  68. Assert.Throws<ActivationException>( () => kernel.Get<NinjaBarracks>() );
  69. kernel.Bind<IWeapon>().To<Sword>();
  70. Assert.Throws<ActivationException>( () => kernel.Get<NinjaBarracks>() );
  71. kernel.Unbind<IWeapon>();
  72. kernel.Bind<IWarrior>().To<Samurai>();
  73. Assert.Throws<ActivationException>( () => kernel.Get<NinjaBarracks>() );
  74. kernel.Unbind<IWarrior>();
  75. }
  76. }
  77. }
  78. }