public void WorksWithConstructorAndPropertyInjection()
        {
            // --- Arrange
            var ltManager = new SingletonLifetimeManager
            {
                ServiceObjectType      = typeof(SampleObject),
                ConstructionParameters = new object[] { 12 },
                Properties             = new PropertySettingsCollection(new List <PropertySettings>
                {
                    new PropertySettings("Property1", "45"),
                    new PropertySettings("Property2", "hello")
                })
            };

            // --- Act
            var instance1 = ltManager.GetObject() as SampleObject;
            var instance2 = ltManager.GetObject() as SampleObject;

            // --- Assert
            instance1.ShouldNotBeNull();
            instance1.ShouldBeSameAs(instance2);
            // ReSharper disable PossibleNullReferenceException
            instance1.Property1.ShouldEqual(45);
            instance1.Property2.ShouldEqual("hello");
            // ReSharper restore PossibleNullReferenceException
        }
        public void WorksWithInstance()
        {
            // --- Arrange
            var ltManager = new SingletonLifetimeManager(new SampleObject());

            // --- Act
            var instance1 = ltManager.GetObject() as SampleObject;
            var instance2 = ltManager.GetObject() as SampleObject;

            // --- Assert
            instance1.ShouldNotBeNull();
            instance1.ShouldBeSameAs(instance2);
            // ReSharper disable PossibleNullReferenceException
            instance1.Property1.ShouldEqual(SampleObject.DEFAULT_INT);
            instance1.Property2.ShouldEqual(SampleObject.DEFAULT_STRING);
            // ReSharper restore PossibleNullReferenceException
        }
        public void WorksWithConstructorParams2()
        {
            // --- Arrange
            var ltManager = new SingletonLifetimeManager
            {
                ServiceObjectType      = typeof(SampleObject),
                ConstructionParameters = new object[] { 23 }
            };

            // --- Act
            var instance1 = ltManager.GetObject() as SampleObject;
            var instance2 = ltManager.GetObject() as SampleObject;

            // --- Assert
            instance1.ShouldNotBeNull();
            instance1.ShouldBeSameAs(instance2);
            // ReSharper disable PossibleNullReferenceException
            instance1.Property1.ShouldEqual(23);
            instance1.Property2.ShouldEqual(SampleObject.DEFAULT_STRING);
            // ReSharper restore PossibleNullReferenceException
        }
        public void WorksWithReset()
        {
            // --- Arrange
            var ltManager = new SingletonLifetimeManager
            {
                ServiceObjectType = typeof(SampleObject)
            };

            // --- Act
            var instance1 = ltManager.GetObject() as SampleObject;

            ltManager.ResetState();
            var instance2 = ltManager.GetObject() as SampleObject;
            var instance3 = ltManager.GetObject() as SampleObject;

            // --- Assert
            instance1.ShouldNotBeNull();
            instance2.ShouldNotBeNull();
            instance1.ShouldNotBeSameAs(instance2);
            instance2.ShouldBeSameAs(instance3);
        }