public IEnumerator TestOneParameterDeep()
        {
            PreInstall();
            CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/BarInstaller/TestCompositeScriptableObjectDeepBarInstaller1", Container);
            PostInstall();

            Assert.IsEqual(Container.Resolve <string>(), "composite scriptable object installer blurg");
            yield break;
        }
        public IEnumerator TestZeroParametersDeep()
        {
            PreInstall();
            CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/FooInstaller/TestCompositeScriptableObjectDeepFooInstaller1", Container);
            PostInstall();

            FixtureUtil.AssertResolveCount <Foo>(Container, 1);
            yield break;
        }
        public IEnumerator TestMultipleInstallersDeep()
        {
            PreInstall();
            CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/FooInjecteeInstaller/TestCompositeSOFooInjecteeInstaller", Container);
            CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/FooInstaller/TestCompositeScriptableObjectFooInstaller", Container);
            PostInstall();

            FixtureUtil.AssertResolveCount <Foo>(Container, 1);
            FixtureUtil.AssertResolveCount <FooInjectee>(Container, 1);
            yield break;
        }
        public IEnumerator TestThreeParametersDeep()
        {
            PreInstall();
            CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/QuxInstaller/TestCompositeScriptableObjectDeepQuxInstaller1", Container);
            PostInstall();

            Assert.IsEqual(Container.Resolve <string>(), "composite scriptable object installer string");
            Assert.IsEqual(Container.Resolve <float>(), 1.234f);
            Assert.IsEqual(Container.Resolve <int>(), 5678);
            yield break;
        }
        public IEnumerator TestDuplicateInstallers()
        {
            PreInstall();
            CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/FooInstaller/TestCompositeScriptableObjectDeepFooInstaller1", Container);
            Assert.Throws <ZenjectException>(() =>
            {
                CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/FooInstaller/TestCompositeScriptableObjectDeepFooInstaller2", Container);
            });
            PostInstall();

            yield break;
        }
        public IEnumerator TestAssertWithCircularReference()
        {
            PreInstall();

            Assert.Throws <ZenjectException>(() =>
            {
                CompositeScriptableObjectInstaller.InstallFromResource("TestCompositeScriptableObjectInstallers/CircularReferenceCompositeInstaller/CircularReferenceCompositeScriptableObjectInstaller", Container);
            });

            PostInstall();

            yield break;
        }