PageRenderTime 50ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Ninject.Tests/Integration/ActivationStrategyTests.cs

https://github.com/daniyord/ninject
C# | 60 lines | 56 code | 4 blank | 0 comment | 0 complexity | b1e9cc5c6af136c0aa1e518c7a8a4a4f MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception
  1. using Ninject.Tests.Fakes;
  2. using Xunit;
  3. using Xunit.Should;
  4. namespace Ninject.Tests.Integration
  5. {
  6. public class ActivationStrategyTests
  7. {
  8. [Fact]
  9. public void InstanceIsActivatedOnCreation()
  10. {
  11. using ( var kernel = new StandardKernel() )
  12. {
  13. kernel.Bind<Barracks>()
  14. .ToSelf()
  15. .OnActivation(instance =>
  16. {
  17. instance.Warrior = new FootSoldier();
  18. instance.Weapon = new Shuriken();
  19. });
  20. var barracks = kernel.Get<Barracks>();
  21. barracks.Warrior.ShouldNotBeNull();
  22. barracks.Warrior.ShouldBeInstanceOf<FootSoldier>();
  23. barracks.Weapon.ShouldNotBeNull();
  24. barracks.Weapon.ShouldBeInstanceOf<Shuriken>();
  25. }
  26. }
  27. [Fact]
  28. public void InstanceIsDeactivatedWhenItLeavesScope()
  29. {
  30. Barracks barracks;
  31. using ( var kernel = new StandardKernel() )
  32. {
  33. kernel.Bind<Barracks>()
  34. .ToSelf()
  35. .InSingletonScope()
  36. .OnActivation(instance =>
  37. {
  38. instance.Warrior = new FootSoldier();
  39. instance.Weapon = new Shuriken();
  40. })
  41. .OnDeactivation(instance =>
  42. {
  43. instance.Warrior = null;
  44. instance.Weapon = null;
  45. });
  46. barracks = kernel.Get<Barracks>();
  47. barracks.Warrior.ShouldNotBeNull();
  48. barracks.Warrior.ShouldBeInstanceOf<FootSoldier>();
  49. barracks.Weapon.ShouldNotBeNull();
  50. barracks.Weapon.ShouldBeInstanceOf<Shuriken>();
  51. }
  52. barracks.Warrior.ShouldBeNull();
  53. barracks.Weapon.ShouldBeNull();
  54. }
  55. }
  56. }