public void ParameterizedConstructorRegistrationTest()
        {
            var container = new PandaContainer();

            container.RegisterType <IRegistrationTest>(() => new RegistrationTest {
                Name = "42"
            });
            container.RegisterType <ParameterizedConstructorTest, ParameterizedConstructorTest>();

            var instance = container.Resolve <ParameterizedConstructorTest>();

            instance.Container.ShouldBeSameAs(container);
            instance.TestProperty.ShouldNotBeNull();
            instance.TestProperty.Name.ShouldBe("42");
        }
        public void RegistrationErrorHandlingTest()
        {
            var container = new PandaContainer();

            Should.Throw <InvalidOperationException>(() => container.Resolve <IRegistrationTest>());

            container.RegisterType <NoPublicConstructorTest, NoPublicConstructorTest>();

            Should.Throw <InvalidOperationException>(() => container.Resolve <NoPublicConstructorTest>());
            Should.Throw <InvalidOperationException>(() => container.RegisterType <NoPublicConstructorTest, NoPublicConstructorTest>());
            Should.Throw <InvalidOperationException>(() => container.RegisterSingletonType <NoPublicConstructorTest, NoPublicConstructorTest>());

            container.RegisterType <ParameterizedConstructorTest, ParameterizedConstructorTest>();

            Should.Throw <InvalidOperationException>(() => container.Resolve <ParameterizedConstructorTest>());
        }
        public void MultipleInstanceTypeOfRegistrationTest()
        {
            var container = new PandaContainer();

            container.RegisterType <IRegistrationTest>(typeof(RegistrationTest));

            var instance = container
                           .Resolve(typeof(IRegistrationTest))
                           .ShouldBeOfType <RegistrationTest>();

            instance.Name.ShouldBeNull();
            instance.Value.ShouldBeNull();
        }
        public void MultipleInstanceCustomFactoryRegistrationTest()
        {
            var container = new PandaContainer();

            container.RegisterType <IRegistrationTest>(() => new RegistrationTest {
                Name = "CustomName", Value = "CustomValue"
            });

            var instance = container.Resolve <IRegistrationTest>();

            instance.Name.ShouldBe("CustomName");
            instance.Value.ShouldBe("CustomValue");
        }
        public void MultipleInstanceRegistrationTest()
        {
            var container = new PandaContainer();

            container.RegisterType <IRegistrationTest, RegistrationTest>();

            var instance = container.Resolve <IRegistrationTest>();

            instance.Name.ShouldBeNull();
            instance.Value.ShouldBeNull();

            var anotherInstance = container.Resolve <IRegistrationTest>(
                new InjectProperty("Test", "Name"),
                new InjectProperty("Value", "Value"));

            anotherInstance.ShouldNotBeSameAs(instance);
            anotherInstance.Name.ShouldBe("Name");
            anotherInstance.Value.ShouldBe("Value");
        }