231 lines
6.8 KiB
C#
231 lines
6.8 KiB
C#
|
|
using System.Collections;
|
|
using ModestTree;
|
|
using UnityEngine.TestTools;
|
|
using Zenject.Tests.Bindings.FromSubContainerPrefabResource;
|
|
|
|
namespace Zenject.Tests.Bindings
|
|
{
|
|
public class TestFromSubContainerPrefabResource : ZenjectIntegrationTestFixture
|
|
{
|
|
const string PathPrefix = "TestFromSubContainerPrefabResource/";
|
|
const string FooResourcePath = PathPrefix + "FooSubContainer";
|
|
|
|
void CommonInstall()
|
|
{
|
|
Container.Settings = new ZenjectSettings(ValidationErrorResponses.Throw);
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestTransientError()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
// Validation should detect that it doesn't exist
|
|
Container.Bind<Foo>().FromSubContainerResolve().ByNewContextPrefabResource(PathPrefix + "asdfasdfas").AsTransient().NonLazy();
|
|
|
|
Assert.Throws(() => PostInstall());
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfSingle()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<Foo>().FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfTransient()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<Foo>().FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsTransient().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfCached()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<Foo>().FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfSingleMultipleContracts()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind(typeof(Foo), typeof(Bar)).FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
FixtureUtil.AssertComponentCount<Bar>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfCachedMultipleContracts()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind(typeof(Foo), typeof(Bar)).FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
FixtureUtil.AssertComponentCount<Bar>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfTransientMultipleContracts()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind(typeof(Foo), typeof(Bar)).FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsTransient().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(2);
|
|
FixtureUtil.AssertComponentCount<Foo>(2);
|
|
FixtureUtil.AssertComponentCount<Bar>(2);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestConcreteSingle()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<IFoo>().To<Foo>().FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestConcreteTransient()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<IFoo>().To<Foo>().FromSubContainerResolve()
|
|
.ByNewContextPrefabResource(FooResourcePath).AsTransient().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestConcreteCached()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<IFoo>().To<Foo>().FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestConcreteSingleMultipleContracts()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind(typeof(IFoo), typeof(Bar)).To(typeof(Foo), typeof(Bar))
|
|
.FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
FixtureUtil.AssertComponentCount<Bar>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestConcreteCachedMultipleContracts()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind(typeof(Foo), typeof(IFoo)).To<Foo>().FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
FixtureUtil.AssertComponentCount<Foo>(1);
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfIdentifiersFails()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<Gorp>().FromSubContainerResolve().ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
Assert.Throws(() => PostInstall());
|
|
yield break;
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator TestSelfIdentifiers()
|
|
{
|
|
PreInstall();
|
|
CommonInstall();
|
|
|
|
Container.Bind<Gorp>().FromSubContainerResolve("gorp").ByNewContextPrefabResource(FooResourcePath).AsSingle().NonLazy();
|
|
|
|
PostInstall();
|
|
|
|
FixtureUtil.AssertNumGameObjects(1);
|
|
yield break;
|
|
}
|
|
}
|
|
}
|
|
|