コード例 #1
0
ファイル: TestFrom.cs プロジェクト: UniDi/UniDi
        public void TestSelfCached()
        {
            Container.Bind <Foo>().AsSingle().NonLazy();

            Assert.IsNotNull(Container.Resolve <Foo>());
            Assert.IsEqual(Container.Resolve <Foo>(), Container.Resolve <Foo>());
        }
コード例 #2
0
ファイル: TestFrom.cs プロジェクト: UniDi/UniDi
        public void TestMultipleBindingsCached()
        {
            Container.Bind(typeof(IFoo), typeof(IBar)).To <Foo>().AsSingle().NonLazy();

            Assert.IsEqual(Container.Resolve <IFoo>(), Container.Resolve <IFoo>());
            Assert.IsEqual(Container.Resolve <IFoo>(), Container.Resolve <IBar>());
        }
コード例 #3
0
ファイル: TestFrom.cs プロジェクト: UniDi/UniDi
        public void TestSelfSingleExplicit()
        {
            Container.Bind <Foo>().ToSelf().FromNew().AsSingle().NonLazy();

            Assert.IsNotNull(Container.Resolve <Foo>());
            Assert.IsEqual(Container.Resolve <Foo>(), Container.Resolve <Foo>());
        }
コード例 #4
0
        public void TestConcrete()
        {
            Container.BindFactory <IFoo, IFooFactory>()
            .To <Foo>().FromIFactory(b => b.To <CustomFooFactory>().AsCached()).NonLazy();

            Assert.IsEqual(Container.Resolve <IFooFactory>().Create(), StaticFoo);
        }
コード例 #5
0
        // Test that tickables get called in the correct order
        public void TestOrder()
        {
            BindTickable <Tickable3>(2);
            BindTickable <Tickable1>(0);
            BindTickable <Tickable2>(1);

            var taskUpdater = _container.Resolve <TaskUpdater <ITickable> >();

            var tick1 = _container.Resolve <Tickable1>();
            var tick2 = _container.Resolve <Tickable2>();
            var tick3 = _container.Resolve <Tickable3>();

            int tickCount = 0;

            tick1.TickCalled += delegate
            {
                Assert.IsEqual(tickCount, 0);
                tickCount++;
            };

            tick2.TickCalled += delegate
            {
                Assert.IsEqual(tickCount, 1);
                tickCount++;
            };

            tick3.TickCalled += delegate
            {
                Assert.IsEqual(tickCount, 2);
                tickCount++;
            };

            taskUpdater.UpdateAll();
        }
コード例 #6
0
        public void Test1()
        {
            Container.BindFactory <string, Foo, Foo.Factory>().FromPoolableMemoryPool(x => x.WithInitialSize(2).WithArguments("blurg"));

            var factory = Container.Resolve <Foo.Factory>();

            var foo = factory.Create("asdf");

            Assert.IsEqual(foo.InitialData, "blurg");

            var pool = foo.Pool;

            Assert.IsEqual(pool.NumActive, 1);
            Assert.IsEqual(pool.NumTotal, 2);
            Assert.IsEqual(pool.NumInactive, 1);

            Assert.IsEqual(foo.Data, "asdf");

            foo.Dispose();

            Assert.IsEqual(pool.NumActive, 0);
            Assert.IsEqual(pool.NumTotal, 2);
            Assert.IsEqual(pool.NumInactive, 2);
            Assert.IsEqual(foo.Data, null);
        }
コード例 #7
0
        public void TestInstallerSelfSingleMultipleContracts()
        {
            Container.Bind(typeof(Foo), typeof(Bar)).FromSubContainerResolve()
            .ByInstance(CreateFooSubContainer()).AsSingle().NonLazy();

            Assert.IsEqual(Container.Resolve <Foo>().Bar, Container.Resolve <Bar>());
        }
コード例 #8
0
        public void TestConcrete()
        {
            Container.BindFactory <string, IFoo, IFooFactory>()
            .To <Foo>().FromSubContainerResolve().ByInstaller <FooInstaller>().NonLazy();

            Assert.IsEqual(Container.Resolve <IFooFactory>().Create("asdf").Value, "asdf");
        }
コード例 #9
0
        public void TestConcrete()
        {
            Container.BindFactory <IFoo, IFooFactory>()
            .To <Foo>().FromSubContainerResolve().ByMethod(InstallFoo).NonLazy();

            Assert.IsEqual(Container.Resolve <IFooFactory>().Create(), ConstFoo);
        }
コード例 #10
0
        public void TestDecoratorMethod()
        {
            SaveHandler.NumInstances = 0;
            SaveDecorator1.CallCount = 0;

            bool wasCalled = false;

            Container.Bind <ISaveHandler>().To <SaveHandler>().AsSingle();
            Container.Decorate <ISaveHandler>()
            .With <SaveDecorator1>().FromMethod((x, h) =>
            {
                wasCalled = true;
                return(new SaveDecorator1(h));
            });

            CallCounter = 1;
            Assert.That(!wasCalled);
            Assert.IsEqual(SaveHandler.NumInstances, 0);
            Assert.IsEqual(SaveDecorator1.CallCount, 0);

            Container.Resolve <ISaveHandler>().Save();

            Assert.That(wasCalled);
            Assert.IsEqual(SaveHandler.NumInstances, 1);
            Assert.IsEqual(SaveDecorator1.CallCount, 1);
        }
コード例 #11
0
        public void Test1()
        {
            Container.Bind <IFoo>().To <Foo1>().AsSingle();
            Container.Bind <IFoo>().To <Foo2>().AsSingle();

            Assert.IsEqual(Container.ResolveAll <IFoo>().Count, 2);
        }
コード例 #12
0
ファイル: TestNullableValues.cs プロジェクト: UniDi/UniDi
        public void RunTest1()
        {
            Container.Bind <Test1>().AsSingle().NonLazy();
            Container.Bind <int>().FromInstance(1).NonLazy();

            Assert.IsEqual(Container.Resolve <Test1>().val, 1);
        }
コード例 #13
0
ファイル: TestFromMethodMultiple.cs プロジェクト: UniDi/UniDi
        public void TestCached2()
        {
            Container.Bind(typeof(Foo), typeof(IFoo)).To <Foo>().FromMethodMultiple(ctx => new[] { new Foo() }).AsSingle().NonLazy();

            Assert.IsEqual(Container.Resolve <Foo>(), Container.Resolve <Foo>());
            Assert.IsEqual(Container.Resolve <Foo>(), Container.Resolve <IFoo>());
        }
コード例 #14
0
        public void TestInstallerSelfSingleMultipleMatches()
        {
            Container.Bind <Qux>().FromSubContainerResolveAll()
            .ByInstanceGetter(ctx => CreateFooSubContainer()).AsSingle().NonLazy();

            Assert.IsEqual(Container.ResolveAll <Qux>().Count, 2);
        }
コード例 #15
0
ファイル: TestPoolableManager.cs プロジェクト: UniDi/UniDi
        public void TestExplicitOrder()
        {
            Container.Bind <PoolableManager>().AsSingle();
            Container.Bind <IPoolable>().To <Foo>().AsSingle();
            Container.Bind <IPoolable>().To <Bar>().AsSingle();

            Container.BindExecutionOrder <Foo>(2);
            Container.BindExecutionOrder <Bar>(1);

            var poolManager = Container.Resolve <PoolableManager>();

            CallCount            = 1;
            Foo.SpawnCallCount   = 0;
            Foo.DespawnCallCount = 0;
            Bar.SpawnCallCount   = 0;
            Bar.DespawnCallCount = 0;

            poolManager.TriggerOnSpawned();

            Assert.IsEqual(Foo.SpawnCallCount, 2);
            Assert.IsEqual(Bar.SpawnCallCount, 1);
            Assert.IsEqual(Foo.DespawnCallCount, 0);
            Assert.IsEqual(Bar.DespawnCallCount, 0);

            poolManager.TriggerOnDespawned();

            Assert.IsEqual(Foo.SpawnCallCount, 2);
            Assert.IsEqual(Bar.SpawnCallCount, 1);
            Assert.IsEqual(Foo.DespawnCallCount, 3);
            Assert.IsEqual(Bar.DespawnCallCount, 4);
        }
コード例 #16
0
        public void TestSelf()
        {
            Container.BindFactory <Foo, Foo.Factory>()
            .FromSubContainerResolve().ByInstaller <FooInstaller>().NonLazy();

            Assert.IsEqual(Container.Resolve <Foo.Factory>().Create(), FooInstaller.Foo);
        }
コード例 #17
0
        public void TestInstallerSelfCachedMultipleContracts()
        {
            Container.Bind(typeof(Foo), typeof(IFoo)).To <Foo>().FromSubContainerResolve()
            .ByInstanceGetter(ctx => CreateFooSubContainer()).AsSingle().NonLazy();

            Assert.IsEqual(Container.Resolve <Foo>(), Container.Resolve <IFoo>());
        }
コード例 #18
0
ファイル: TestTestOptional.cs プロジェクト: UniDi/UniDi
        public void TestPrimitiveParamOptionalUsesExplicitDefault3()
        {
            Container.Bind <Test8_2>().AsSingle().NonLazy();
            Container.BindInstance(2);

            Assert.IsEqual(Container.Resolve <Test8_2>().Val1, 2);
        }
コード例 #19
0
ファイル: TestSubContainers.cs プロジェクト: UniDi/UniDi
        public void TestCase2()
        {
            Test0 test0;
            Test1 test1;

            var subContainer = Container.CreateSubContainer();
            var test0Local   = new Test0();

            subContainer.Bind <Test0>().FromInstance(test0Local);
            subContainer.Bind <Test1>().AsSingle();

            test0 = subContainer.Resolve <Test0>();
            Assert.IsEqual(test0Local, test0);

            test1 = subContainer.Resolve <Test1>();

            Assert.Throws(
                delegate { Container.Resolve <Test0>(); });

            Assert.Throws(
                delegate { Container.Resolve <Test1>(); });

            Container.Bind <Test0>().AsSingle();
            Container.Bind <Test1>().AsSingle();

            Assert.That(Container.Resolve <Test0>() != test0);

            Assert.That(Container.Resolve <Test1>() != test1);
        }
コード例 #20
0
        public void TestSelf()
        {
            Container.BindFactory <string, Foo, Foo.Factory>()
            .FromSubContainerResolve().ByMethod(InstallFoo).NonLazy();

            Assert.IsEqual(Container.Resolve <Foo.Factory>().Create("asdf").Value, "asdf");
        }
コード例 #21
0
        public void Test2()
        {
            var foo = new Foo();

            Container.BindMemoryPoolCustomInterface <Foo, Foo.Pool, Foo.IFooPool>().FromInstance(foo);

            Assert.IsEqual(Container.Resolve <Foo.IFooPool>().Spawn(), foo);
        }
コード例 #22
0
ファイル: TestFromMethodMultiple.cs プロジェクト: UniDi/UniDi
        public void TestCached()
        {
            var foo = new Foo();

            Container.Bind <Foo>().FromMethodMultiple(ctx => new[] { foo }).AsSingle().NonLazy();

            Assert.IsEqual(Container.Resolve <Foo>(), foo);
        }
コード例 #23
0
        public void Test1()
        {
            var foo = new Foo();

            Container.BindFactoryCustomInterface <Foo, Foo.Factory, Foo.IFooFactory>().FromInstance(foo);

            Assert.IsEqual(Container.Resolve <Foo.IFooFactory>().Create(), foo);
        }
コード例 #24
0
        public void TestMultiple()
        {
            Container.Bind <Foo>().AsCached();
            Container.Bind <Foo>().AsCached();
            Container.Bind <Bar>().FromResolveAllGetter <Foo>(x => x.Bar).AsSingle();

            Assert.IsEqual(Container.ResolveAll <Bar>().Count, 2);
        }
コード例 #25
0
ファイル: TestIFactory.cs プロジェクト: UniDi/UniDi
        public void Test5()
        {
            Container.BindIFactory <string, int, char, long, double, IFooFive>().To <FooFive>();

            var factory = Container.Resolve <IFactory <string, int, char, long, double, IFooFive> >();

            Assert.IsEqual(factory.Create("asdf", 0, 'z', 2, 3.0).P1, "asdf");
        }
コード例 #26
0
ファイル: TestIFactory.cs プロジェクト: UniDi/UniDi
        public void Test2()
        {
            Container.BindIFactory <string, FooTwo>();

            var factory = Container.Resolve <IFactory <string, FooTwo> >();

            Assert.IsEqual(factory.Create("asdf").Value, "asdf");
        }
コード例 #27
0
        public void TestTransient()
        {
            Container.Bind <Foo>().AsSingle();
            Container.Bind <Bar>().FromResolveGetter <Foo>(x => x.Bar);

            Assert.IsNotNull(Container.Resolve <Bar>());
            Assert.IsEqual(Container.Resolve <Bar>(), Container.Resolve <Foo>().Bar);
        }
コード例 #28
0
ファイル: TestFactoryFromGetter0.cs プロジェクト: UniDi/UniDi
        public void TestSelf()
        {
            Container.Bind <Foo>().AsSingle().NonLazy();
            Container.BindFactory <Bar, Bar.Factory>().FromResolveGetter <Foo>(x => x.Bar).NonLazy();

            Assert.IsNotNull(Container.Resolve <Bar.Factory>().Create());
            Assert.IsEqual(Container.Resolve <Bar.Factory>().Create(), Container.Resolve <Foo>().Bar);
        }
コード例 #29
0
        public void TestSelf()
        {
            var foo = new Foo();

            Container.BindFactory <Foo, Foo.Factory>().FromInstance(foo).NonLazy();

            Assert.IsEqual(Container.Resolve <Foo.Factory>().Create(), foo);
        }
コード例 #30
0
ファイル: TestValidation.cs プロジェクト: UniDi/UniDi
        public void TestCustomValidatable()
        {
            Container.BindInterfacesAndSelfTo <Loy>().AsSingle().NonLazy();

            Container.ResolveRoots();

            Assert.IsEqual(Container.Resolve <Loy>().CallCount, 1);
        }