public void Component_With_LifestyleDescriptor_Overrides_Default_Lifestyle()
        {
            // arrange
              ResolvableProperty prop = new ResolvableProperty("placeOfBirth");

              var registration = new PropertyResolvingComponentRegistration<ICanBePerson>()
            .DependsOnProperties(prop)
            .ImplementedBy<Person>();

              // now override lifestyle with a descriptor
              registration.AddDescriptor(new LifestyleDescriptor<ICanBePerson>(LifestyleType.Transient));

              // act
              m_container.Register(registration);

              // assert
              Person person1 = (Person)m_container.Resolve<ICanBePerson>();
              Person person2 = (Person)m_container.Resolve<ICanBePerson>();

              // since we have overridden the lifestyle, the container should generate 2 instances
              // therefore hashcode should be different for both instances
              Assert.AreNotEqual(person1.GetHashCode(), person2.GetHashCode());
        }
        public void Component_With_Name_Resolves_As_Expected()
        {
            // arrange
              ResolvableProperty prop = new ResolvableProperty("placeOfBirth");

              var registration = new PropertyResolvingComponentRegistration<ICanBePerson>()
            .DependsOnProperties(prop)
            .ImplementedBy<Person>()
            .WithName("myPerson");

              // act
              m_container.Register(registration);

              // assert
              Person person = (Person)m_container.Resolve<ICanBePerson>("myPerson");
              Assert.IsNull(person.Name);
              Assert.AreEqual(0, person.Age);
              Assert.AreEqual("Pune", person.PlaceOfBirth);
        }
        public void Component_With_No_Lifestyle_Registers_As_Singleton()
        {
            // arrange
              ResolvableProperty prop = new ResolvableProperty("placeOfBirth");

              var registration = new PropertyResolvingComponentRegistration<ICanBePerson>()
            .DependsOnProperties(prop)
            .ImplementedBy<Person>();

              // act
              m_container.Register(registration);

              // assert
              Person person1 = (Person)m_container.Resolve<ICanBePerson>();
              Person person2 = (Person)m_container.Resolve<ICanBePerson>();

              // since we have not specified the lifestyle, the container should return the same instance
              // therefore hashcode should be equal for both instances
              Assert.AreEqual(person1.GetHashCode(), person2.GetHashCode());
        }