TestBindCallbacks.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using NUnit.Framework;
  2. using Assert = ModestTree.Assert;
  3. namespace Zenject.Tests.Other
  4. {
  5. [TestFixture]
  6. public class TestBindCallbacks : ZenjectUnitTestFixture
  7. {
  8. public class Foo
  9. {
  10. [Inject]
  11. public int Value2
  12. {
  13. get; set;
  14. }
  15. public string Value
  16. {
  17. get; set;
  18. }
  19. public class Factory : PlaceholderFactory<Foo>
  20. {
  21. }
  22. public class Pool : MemoryPool<Foo>
  23. {
  24. }
  25. }
  26. [Test]
  27. public void Test1()
  28. {
  29. Container.BindInstance(5).WhenInjectedInto<Foo>();
  30. Container.Bind<Foo>().AsSingle().OnInstantiated<Foo>((ctx, f) =>
  31. {
  32. Assert.IsEqual(f.Value2, 5);
  33. f.Value = "asdf";
  34. });
  35. var foo = Container.Resolve<Foo>();
  36. Assert.IsEqual(foo.Value, "asdf");
  37. }
  38. [Test]
  39. public void TestFactory1()
  40. {
  41. Container.BindInstance(5).WhenInjectedInto<Foo>();
  42. Container.BindFactory<Foo, Foo.Factory>().OnInstantiated<Foo>((ctx, f) =>
  43. {
  44. Assert.IsEqual(f.Value2, 5);
  45. f.Value = "asdf";
  46. });
  47. var foo = Container.Resolve<Foo.Factory>().Create();
  48. Assert.IsEqual(foo.Value, "asdf");
  49. }
  50. [Test]
  51. public void TestMemoryPool1()
  52. {
  53. Container.BindInstance(5).WhenInjectedInto<Foo>();
  54. Container.BindMemoryPool<Foo, Foo.Pool>().OnInstantiated<Foo>((ctx, f) =>
  55. {
  56. Assert.IsEqual(f.Value2, 5);
  57. f.Value = "asdf";
  58. });
  59. var foo = Container.Resolve<Foo.Pool>().Spawn();
  60. Assert.IsEqual(foo.Value, "asdf");
  61. }
  62. }
  63. }