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); }
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()); }
public void NoBoundInterface() { TeenyKernel kernel = new TeenyKernel(); Assert.ThrowsException <Exception>(() => { Interface1 test1 = kernel.Get <Interface1>(); }); }
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!"); }
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!"); }
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()); }
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)); }
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>(); }); }
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)); }
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()); }
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"); }
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!"); }
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()); }