using NUnit.Framework; using Assert = ModestTree.Assert; namespace Zenject.Tests.Bindings.Singletons { [TestFixture] public class TestLazy : ZenjectUnitTestFixture { [Test] public void Test1() { Bar.InstanceCount = 0; Container.Bind().AsSingle(); Container.Bind().AsSingle(); var foo = Container.Resolve(); Assert.IsEqual(Bar.InstanceCount, 0); foo.DoIt(); Assert.IsEqual(Bar.InstanceCount, 1); } [Test] public void TestOptional1() { Container.Bind().AsSingle(); Container.Bind().AsSingle(); Assert.IsNotNull(Container.Resolve().Bar.Value); } [Test] public void TestOptional2() { Container.Bind().AsSingle(); Assert.IsNull(Container.Resolve().Bar.Value); } [Test] public void TestOptional3() { Container.Bind().AsSingle(); var gorp = Container.Resolve(); object temp; Assert.Throws(() => temp = gorp.Bar.Value); } public class Bar { public static int InstanceCount; public Bar() { InstanceCount++; } public void DoIt() { } } public class Foo { readonly LazyInject _bar; public Foo(LazyInject bar) { _bar = bar; } public void DoIt() { _bar.Value.DoIt(); } } public class Qux { [Inject(Optional = true)] public LazyInject Bar; } public class Gorp { public LazyInject Bar; } } }