public void NullDeferedSingleton()
 {
     using (var container = new TurboContainer())
     {
         container.AddAssociation <TestClass>(new DeferedSingletonLifetime(r => null, typeof(TestClass)));
         var item = container.Resolve <TestClass>();
         Assert.IsNull(item);
     }
 }
 public void NullSingleton()
 {
     using (var container = new TurboContainer())
     {
         container.AddSingleton <TestClass>((TestClass)null);
         var item = container.Resolve <TestClass>();
         Assert.IsNull(item);
     }
 }
        public void SimpleResolveTest()
        {
            using (TurboContainer container = new TurboContainer())
            {
                container.AddSingleton <int>(10);
                var result = container.Resolve <int>();

                Assert.AreEqual(10, result);
            }
        }
        public void ResolveTheBaseClass()
        {
            using (var container = new TurboContainer())
            {
                container.AddSingleton <TestClass>(new TestDerivedClass());
                var item = container.Resolve <TestClass>();
                Assert.IsNotNull(item);

                container.RemoveAssociation <TestClass>();

                container.AddDeferedSingleton <TestClass, TestDerivedClass>();
                var item2 = container.Resolve <TestClass>();
                Assert.IsNotNull(item2);
            }
        }
        public void SimpleResolveTest2()
        {
            using (var container = new TurboContainer())
            {
                container.AddSingleton <int>(10);
                container.AddSingleton <string>("value");
                container.AddPerCall <ITestInterface, TestImplementation>();
                container.AddAssociation <TestClass, TestClass>(LifetimeFactories.DeferedSingleton);
                container.AddAssociation <double>(new PerCallLifetime(typeof(double), r => 15.0));

                Assert.AreEqual("value", container.Resolve <string>());
                Assert.IsInstanceOfType(container.Resolve <ITestInterface>(), typeof(TestImplementation));

                var obj = container.CreateObject <TestInjectionToConstructor>();
                Assert.IsNotNull(obj);
                Assert.AreEqual(15.0, obj.Value);
                Assert.AreEqual("value", obj.StrValue);
                Assert.IsNotNull(container.Resolve <TestClass>());
            }
        }