/src/Ninject.Tests/Unit/PropertyInjectionSelectorTests.cs

https://github.com/ALyman/ninject · C# · 64 lines · 55 code · 9 blank · 0 comment · 2 complexity · a6b060b94806139f8cf0d2b1ce45bb56 MD5 · raw file

  1. using Ninject.Infrastructure.Disposal;
  2. using Ninject.Tests.Fakes;
  3. using Xunit;
  4. namespace Ninject.Tests.Unit
  5. {
  6. public class PropertyInjectionSelectorContext : DisposableObject
  7. {
  8. protected IKernel _kernel;
  9. protected PropertyInjectionSelectorContext()
  10. {
  11. _kernel = new StandardKernel();
  12. _kernel.Bind<IWarrior>()
  13. .To<Ninja>();
  14. _kernel.Bind<IWeapon>()
  15. .To<Sword>();
  16. _kernel.Bind<IWeapon>()
  17. .To<Shuriken>()
  18. .WhenTargetHas<InjectAttribute>();
  19. }
  20. public override void Dispose(bool disposing)
  21. {
  22. if (disposing && !IsDisposed)
  23. {
  24. _kernel.Dispose();
  25. _kernel = null;
  26. }
  27. base.Dispose(disposing);
  28. }
  29. }
  30. public class PropertyInjectionSelectorTests : PropertyInjectionSelectorContext
  31. {
  32. #if !SILVERLIGHT
  33. [Fact]
  34. public void NonPublicPropertiesCanBeInjectedWhenEnabled()
  35. {
  36. _kernel.Settings.InjectNonPublic = true;
  37. var instance = _kernel.Get<Ninja>();
  38. Assert.NotNull(instance.Weapon);
  39. Assert.IsType<Sword>(instance.Weapon);
  40. Assert.NotNull(instance.SecondaryWeapon);
  41. Assert.IsType<Shuriken>(instance.SecondaryWeapon);
  42. Assert.NotNull(instance.SecretWeaponAccessor);
  43. Assert.IsType<Shuriken>(instance.SecretWeaponAccessor);
  44. }
  45. #endif //!SILVERLIGHT
  46. [Fact]
  47. public void NonPublicPropertiesCannotBeCreatedByDefault()
  48. {
  49. var instance = _kernel.Get<Ninja>();
  50. Assert.NotNull(instance.Weapon);
  51. Assert.Null(instance.SecondaryWeapon);
  52. Assert.Null(instance.SecretWeaponAccessor);
  53. }
  54. }
  55. }