public void GetAllToConstant()
        {
            TeenyKernel kernel = new TeenyKernel();

            RandomIdClass class4 = new RandomIdClass();

            kernel.Bind <Interface1>().ToConstant(class4);
            kernel.Bind <Interface1>().ToMethod(_ => class4);
            kernel.Bind <Interface1>().ToMethod(_ => new RandomIdClass());

            IEnumerable <Interface1> interfaces = kernel.GetAll <Interface1>();

            Assert.IsTrue(interfaces.Any());
            Assert.IsFalse(interfaces.Any(i => i is null));

            string id1 = interfaces.ElementAt(0).Test();
            string id2 = interfaces.ElementAt(1).Test();
            string id3 = interfaces.ElementAt(2).Test();

            // First two should be same instance
            Assert.AreEqual(id1, id2);

            // Last one is unique
            Assert.AreNotEqual(id1, id3);
        }
Example #2
0
        public void TestCustomScope()
        {
            int scope = 1;             // can be any object

            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <RandomIdClass>().InScope((_) => scope);

            Interface1 test1 = kernel.Get <Interface1>();
            Interface1 test2 = kernel.Get <Interface1>();

            Assert.AreEqual(test1.Test(), test2.Test());

            // change scope
            scope = 2;
            Interface1 test3 = kernel.Get <Interface1>();

            Assert.AreNotEqual(test1.Test(), test3.Test());

            // change scope back
            scope = 1;
            Interface1 test4 = kernel.Get <Interface1>();

            Assert.AreEqual(test1.Test(), test4.Test());
        }
Example #3
0
        public void NoBoundInterface()
        {
            TeenyKernel kernel = new TeenyKernel();

            Assert.ThrowsException <Exception>(() =>
            {
                Interface1 test1 = kernel.Get <Interface1>();
            });
        }
Example #4
0
        public void ObjectFromAbstractClass()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <AbstractClass>().To <ConcreteClass>();

            AbstractClass test3 = kernel.Get <AbstractClass>();

            Assert.IsNotNull(test3);
            Assert.AreEqual(test3.Test(), "Hello World!");
        }
Example #5
0
        public void ObjectFromInterface()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <BasicClass1>();

            Interface1 test1 = kernel.Get <Interface1>();

            Assert.IsNotNull(test1);
            Assert.AreEqual(test1.Test(), "Hello World!");
        }
Example #6
0
        public void TestTransient()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <RandomIdClass>().InTransientScope();           // default, optional

            Interface1 test1 = kernel.Get <Interface1>();
            Interface1 test2 = kernel.Get <Interface1>();

            Assert.AreNotEqual(test1.Test(), test2.Test());
        }
Example #7
0
        public void NoBoundInterface()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <BasicClass1>()
            .WhenInjectedInto <ReverseClass>();

            Assert.ThrowsException <Exception>(() =>
            {
                Interface1 test1 = kernel.Get <Interface1>();
            });
        }
        public void GetAll()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <BasicClass1>();
            kernel.Bind <Interface1>().To <BasicClass2>();

            IEnumerable <Interface1> interfaces = kernel.GetAll <Interface1>();

            Assert.IsTrue(interfaces.Any());
            Assert.IsFalse(interfaces.Any(i => i is null));
        }
Example #9
0
        public void DuplicateBinding()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <BasicClass1>();
            kernel.Bind <Interface1>().To <BasicClass2>();

            // Todo: I want this to be regular Exception to match the others
            Assert.ThrowsException <InvalidOperationException>(() =>
            {
                Interface1 test1 = kernel.Get <Interface1>();
            });
        }
Example #10
0
        public void ToConstant()
        {
            TeenyKernel kernel = new TeenyKernel();

            RandomIdClass class4 = new RandomIdClass();

            kernel.Bind <Interface1>().ToConstant(class4);

            Interface1 test1 = kernel.Get <Interface1>();
            Interface1 test2 = kernel.Get <Interface1>();

            Assert.AreEqual(test1.Test(), test2.Test());
        }
        public void GetAllWhenInjectedInto()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <BasicClass1>();
            kernel.Bind <Interface1>().To <BasicClass2>();
            kernel.Bind <Interface1>().To <RandomIdClass>()
            .WhenInjectedInto <ReverseClass>();

            IEnumerable <Interface1> interfaces = kernel.GetAll <Interface1>();

            Assert.IsTrue(interfaces.Count() == 2);
            Assert.IsFalse(interfaces.Any(i => i is null));
        }
Example #12
0
        public void TestSingleton_ToMethod()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().ToMethod(krn => new RandomIdClass()).InSingletonScope();

            // test the same instance is created
            Interface1 test1 = kernel.Get <Interface1>();
            Interface1 test2 = kernel.Get <Interface1>();

            Assert.AreEqual(test1.Test(), test2.Test());

            // test both references to the same object
            test1.Guid = Guid.NewGuid();

            Assert.AreEqual(test1.Test(), test2.Test());
        }
Example #13
0
        public void WhenInjectedInto()
        {
            TeenyKernel kernel = new TeenyKernel();

            kernel.Bind <Interface1>().To <BasicClass1>()
            .WhenInjectedInto <ReverseClass>();
            kernel.Bind <ReverseClass>().ToSelf();

            // Interface1 is only bound when injected into ReverseClass
            Assert.ThrowsException <Exception>(() =>
            {
                Interface1 test1 = kernel.Get <Interface1>();
            });
            ReverseClass test2 = kernel.Get <ReverseClass>();

            Assert.IsNotNull(test2);

            // ReverseClass reverses the output of its injected Interface1
            Assert.AreEqual(test2.Test(), "!dlroW olleH");
        }
Example #14
0
        public void ObjectFromClass()
        {
            TeenyKernel kernel = new TeenyKernel();

            // disabled autobind should throw
            kernel.AutoBindEnabled = false;

            Assert.ThrowsException <Exception>(() =>
            {
                BasicClass1 test2 = kernel.Get <BasicClass1>();
            });

            // enable autobind and try again
            kernel.AutoBindEnabled = true;

            BasicClass1 test1 = kernel.Get <BasicClass1>();

            Assert.IsNotNull(test1);
            Assert.AreEqual(test1.Test(), "Hello World!");
        }
Example #15
0
        public void ToMethod()
        {
            TeenyKernel kernel = new TeenyKernel();

            RandomIdClass class4 = new RandomIdClass();

            kernel.Bind <Interface1>().ToMethod(_ => class4);

            Interface1 test1 = kernel.Get <Interface1>();
            Interface1 test2 = kernel.Get <Interface1>();

            Assert.AreEqual(test1.Test(), test2.Test());

            // Rebind with new method
            kernel.Rebind <Interface1>().ToMethod(_ => new RandomIdClass());

            Interface1 test3 = kernel.Get <Interface1>();
            Interface1 test4 = kernel.Get <Interface1>();

            Assert.AreNotEqual(test3.Test(), test4.Test());
        }