/
GeekNerd
/
ServerModelingProject
Обзор
Документация
Войти
/
GeekNerd
/
ServerModelingProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Assets/Plugins/Zenject/OptionalExtras/UnitTests/Editor/Injection/TestInjectSources.cs
146 строк
3 KB
Gorney-Alex
Init
30 май 2026, 19:05
30 май 2026, 19:05
3cdcc49
Код
Авторство
О чём код?
using NUnit.Framework; using Assert = ModestTree.Assert; namespace Zenject.Tests.Injection { [TestFixture] public class TestInjectSources { class Test0 { } class Test1 { public Test0 val; public Test1( [InjectLocal] Test0 val) { this.val = val; } } class Test2 { public Test0 val; public Test2( [Inject(Source = InjectSources.Parent)] Test0 val) { this.val = val; } } class Test3 { public Test0 val; public Test3( [Inject(Source = InjectSources.AnyParent)] Test0 val) { this.val = val; } } class Test4 { public Test0 val; public Test4( [Inject(Source = InjectSources.Any)] Test0 val) { this.val = val; } } [Test] public void TestAny() { var rootContainer = new DiContainer(); var sub1 = rootContainer.CreateSubContainer(); rootContainer.Bind<Test0>().AsSingle(); sub1.Bind<Test4>().AsSingle(); Assert.IsNotNull(sub1.Resolve<Test4>()); } [Test] public void TestLocal1() { var rootContainer = new DiContainer(); var sub1 = rootContainer.CreateSubContainer(); rootContainer.Bind<Test0>().AsSingle(); sub1.Bind<Test1>().AsSingle(); Assert.Throws(() => sub1.Resolve<Test1>()); } [Test] public void TestLocal2() { var rootContainer = new DiContainer(); var sub1 = rootContainer.CreateSubContainer(); sub1.Bind<Test0>().AsSingle(); sub1.Bind<Test1>().AsSingle(); Assert.IsNotNull(sub1.Resolve<Test1>()); } [Test] public void TestParent1() { var rootContainer = new DiContainer(); var sub1 = rootContainer.CreateSubContainer(); rootContainer.Bind<Test0>().AsSingle(); sub1.Bind<Test2>().AsSingle(); Assert.IsNotNull(sub1.Resolve<Test2>()); } [Test] public void TestParent2() { var rootContainer = new DiContainer(); var sub1 = rootContainer.CreateSubContainer(); var sub2 = sub1.CreateSubContainer(); rootContainer.Bind<Test0>().AsSingle(); sub2.Bind<Test2>().AsSingle(); Assert.Throws(() => sub2.Resolve<Test2>()); } [Test] public void TestParent3() { var rootContainer = new DiContainer(); rootContainer.Bind<Test0>().AsSingle(); rootContainer.Bind<Test2>().AsSingle(); Assert.Throws(() => rootContainer.Resolve<Test2>()); } [Test] public void TestParentAny1() { var rootContainer = new DiContainer(); var sub1 = rootContainer.CreateSubContainer(); var sub2 = sub1.CreateSubContainer(); rootContainer.Bind<Test0>().AsSingle(); sub2.Bind<Test3>().AsSingle(); Assert.IsNotNull(sub2.Resolve<Test3>()); } } }