Initial Commit
This commit is contained in:
+207
@@ -0,0 +1,207 @@
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using ModestTree;
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
|
||||
namespace Zenject.Tests.Bindings
|
||||
{
|
||||
public class TestFromGameObject : ZenjectIntegrationTestFixture
|
||||
{
|
||||
const string GameObjName = "TestObj";
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestBasic()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind<Foo>().FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName).AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(1);
|
||||
FixtureUtil.AssertComponentCount<Foo>(1);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestSingle()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind(typeof(IFoo), typeof(Foo)).To<Foo>().FromNewComponentOnNewGameObject().WithGameObjectName(GameObjName).AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(1);
|
||||
FixtureUtil.AssertComponentCount<Foo>(1);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestTransient()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind<Foo>().FromNewComponentOnNewGameObject().WithGameObjectName(GameObjName).AsTransient().NonLazy();
|
||||
Container.Bind<IFoo>().To<Foo>().FromNewComponentOnNewGameObject().WithGameObjectName(GameObjName).AsTransient().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(2);
|
||||
FixtureUtil.AssertComponentCount<Foo>(2);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestCached1()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind<Foo>().FromNewComponentOnNewGameObject().WithGameObjectName(GameObjName).AsCached().NonLazy();
|
||||
Container.Bind<IFoo>().To<Foo>().FromNewComponentOnNewGameObject().WithGameObjectName(GameObjName).AsCached().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(2);
|
||||
FixtureUtil.AssertComponentCount<Foo>(2);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestCached2()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind(typeof(Foo), typeof(IFoo)).To<Foo>()
|
||||
.FromNewComponentOnNewGameObject().WithGameObjectName(GameObjName).AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(1);
|
||||
FixtureUtil.AssertComponentCount<Foo>(1);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestMultipleConcreteTransient1()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind<IFoo>().To(typeof(Foo), typeof(Bar)).FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName).AsTransient().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(2);
|
||||
FixtureUtil.AssertComponentCount<Foo>(1);
|
||||
FixtureUtil.AssertComponentCount<Bar>(1);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestMultipleConcreteTransient2()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind(typeof(IFoo), typeof(IBar)).To(new List<Type> {typeof(Foo), typeof(Bar)}).FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName).AsTransient().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(4);
|
||||
FixtureUtil.AssertComponentCount<Foo>(2);
|
||||
FixtureUtil.AssertComponentCount<Bar>(2);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestMultipleConcreteCached()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind(typeof(IFoo), typeof(IBar)).To(new List<Type> {typeof(Foo), typeof(Bar)}).FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName).AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(2);
|
||||
FixtureUtil.AssertComponentCount<Foo>(1);
|
||||
FixtureUtil.AssertComponentCount<Bar>(1);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestMultipleConcreteSingle()
|
||||
{
|
||||
PreInstall();
|
||||
Container.Bind(typeof(IFoo), typeof(IBar)).To(new List<Type> {typeof(Foo), typeof(Bar)}).FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName).AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
FixtureUtil.AssertNumGameObjects(2);
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestUnderTransformGroup()
|
||||
{
|
||||
PreInstall();
|
||||
|
||||
Container.Bind<Foo>().FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName).UnderTransformGroup("Foo").AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
var foo = GameObject.Find("Foo").transform.GetChild(0);
|
||||
|
||||
Assert.IsNotNull(foo.GetComponent<Foo>());
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestUnderTransform()
|
||||
{
|
||||
PreInstall();
|
||||
var tempGameObject = new GameObject("Foo");
|
||||
|
||||
Container.Bind<Foo>().FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName)
|
||||
.UnderTransform(tempGameObject.transform).AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
Assert.IsNotNull(tempGameObject.transform.GetChild(0).GetComponent<Foo>());
|
||||
yield break;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestUnderTransformGetter()
|
||||
{
|
||||
PreInstall();
|
||||
var tempGameObject = new GameObject("Foo");
|
||||
|
||||
Container.Bind<Foo>().FromNewComponentOnNewGameObject()
|
||||
.WithGameObjectName(GameObjName)
|
||||
.UnderTransform(context => tempGameObject.transform).AsSingle().NonLazy();
|
||||
|
||||
PostInstall();
|
||||
|
||||
Assert.IsNotNull(tempGameObject.transform.GetChild(0).GetComponent<Foo>());
|
||||
yield break;
|
||||
}
|
||||
|
||||
public interface IBar
|
||||
{
|
||||
}
|
||||
|
||||
public interface IFoo
|
||||
{
|
||||
}
|
||||
|
||||
public class Foo : MonoBehaviour, IFoo, IBar
|
||||
{
|
||||
}
|
||||
|
||||
public class Bar : MonoBehaviour, IFoo, IBar
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e879b4e0ab309f247a1efc11a7a71bba
|
||||
timeCreated: 1476623361
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user