public void SetsInjectablePropertyValueIfServiceIsRegistered()
        {
            // Arrange
            var serviceInstance = new MyServiceImplementation();

            _serviceProvider.AddService <IMyService>(serviceInstance);

            // Act
            var instance = InstantiateComponent <HasInjectableProperty>();

            // Assert
            Assert.Same(serviceInstance, instance.MyService);
        }
        public void SetsPrivateInheritedInjectableProperties()
        {
            // Arrange
            var serviceInstance = new MyServiceImplementation();

            _serviceProvider.AddService <IMyService>(serviceInstance);

            // Act
            var instance = InstantiateComponent <HasInheritedPrivateInjectableProperty>();

            // Assert
            Assert.Same(serviceInstance, instance.PrivateMyService);
        }
        public void HandlesInjectablePropertyScenarios()
        {
            // Arrange
            var serviceInstance         = new MyServiceImplementation();
            var otherServiceInstance    = new MyOtherServiceImplementation();
            var concreteServiceInstance = new MyConcreteService();

            _serviceProvider.AddService <IMyService>(serviceInstance);
            _serviceProvider.AddService <IMyOtherService>(otherServiceInstance);
            _serviceProvider.AddService(concreteServiceInstance);

            // Act
            var instance = InstantiateComponent <HasManyInjectableProperties>();

            // Assert
            Assert.Same(serviceInstance, instance.PublicReadWrite);
            Assert.Same(serviceInstance, instance.PublicReadOnly);
            Assert.Same(serviceInstance, instance.PrivateValue);
            Assert.Same(otherServiceInstance, instance.DifferentServiceType);
            Assert.Same(concreteServiceInstance, instance.ConcreteServiceType);
        }