/src/UnitTests/IOC/Configuration/InitializerTests.cs

http://github.com/philiplaureano/LinFu · C# · 45 lines · 38 code · 7 blank · 0 comment · 0 complexity · bb2675267863fbb6f2b197638fc5d6f6 MD5 · raw file

  1. using System;
  2. using LinFu.IoC;
  3. using LinFu.IoC.Configuration;
  4. using LinFu.IoC.Interfaces;
  5. using Xunit;
  6. namespace LinFu.UnitTests.IOC.Configuration
  7. {
  8. public class InitializerTests
  9. {
  10. public class InitializableObject : IInitialize
  11. {
  12. public bool InitializeCalled { get; set; }
  13. public void Initialize(IServiceContainer source)
  14. {
  15. InitializeCalled = true;
  16. }
  17. }
  18. public class TestServiceContainer : ServiceContainer
  19. {
  20. public TestServiceContainer()
  21. {
  22. this.AddService(typeof(InitializableObject), typeof(InitializableObject));
  23. }
  24. }
  25. [Fact]
  26. public void InitializerDoesNotHoldRerenceToInitializedObjects()
  27. {
  28. var container = new TestServiceContainer();
  29. var initializable = container.GetService<InitializableObject>();
  30. Assert.True(initializable.InitializeCalled);
  31. var weakRef = new WeakReference(initializable);
  32. Assert.True(weakRef.IsAlive);
  33. initializable = null;
  34. GC.Collect(0, GCCollectionMode.Forced);
  35. Assert.False(weakRef.IsAlive);
  36. }
  37. }
  38. }