public void Overrides_CanOverrideValueFactory()
        {
            // Act
            var resolver = new ValidatingResolverFactory(new Something2());
            var result   = Container.Resolve <ObjectWithProperty>(
                Override.Property(nameof(ObjectWithProperty.MyProperty), resolver));

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.MyProperty);
            Assert.IsInstanceOfType(result.MyProperty, typeof(Something2));
            Assert.AreEqual(typeof(ISomething), resolver.Type);
        }
        public void Overrides_CanOverrideAttributedValueFactory()
        {
            var other    = "other";
            var resolver = new ValidatingResolverFactory(other);

            // Act
            var result = Container.Resolve <ObjectWithThreeProperties>(
                Override.Property(nameof(ObjectWithThreeProperties.Name), resolver));

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Container);
            Assert.AreEqual(result.Name, other);
            Assert.AreEqual(typeof(string), resolver.Type);
        }
        public void Overrides_DependencyOverrideFieldValueFactory()
        {
            var other     = "other";
            var resolver1 = new ValidatingResolverFactory(Name);

            // Act
            var result = Container.Resolve <ObjectWithAttributes>(
                Override.Field(nameof(ObjectWithAttributes.Dependency), resolver1),
                Override.Dependency(other, other));

            // Verify
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Dependency, Name);
            Assert.AreEqual(result.Optional, other);

            Assert.AreEqual(typeof(string), resolver1.Type);
            Assert.AreEqual("name1", resolver1.Name);
        }
        public void Overrides_TypePassedToFactoryAttr()
        {
            // Arrange
            var resolver = new ValidatingResolverFactory(1);

            Container.RegisterType <Service>(
                new InjectionMethod(nameof(Service.DependencyAttribute)));

            // Act
            var result = Container.Resolve <Service>(Override.Parameter(typeof(object), "value", resolver));

            // Assert
            Assert.IsNotNull(result.Value);
            Assert.IsInstanceOfType(result.Value, typeof(object));
            Assert.AreEqual(1, result.Value);

            Assert.AreEqual(typeof(object), resolver.Type);
        }
Example #5
0
        public virtual void Injected_ByFactory_FromEmpty(string test, Type type, string name, Type dependency, object expected)
        {
            Type target = type.IsGenericTypeDefinition
                        ? type.MakeGenericType(dependency)
                        : type;
            // Arrange
            var factory   = new ValidatingResolverFactory(expected);
            var parameter = new InjectionParameter(dependency, factory);

            Container.RegisterType(target, name, GetInjectionValue(parameter));

            // Act
            var instance = Container.Resolve(target, name) as PatternBase;

            // Validate
            Assert.IsNotNull(instance);
            Assert.AreEqual(expected, instance.Value);
        }
        public void Overrides_CanOverrideNamedPropFactory()
        {
            // Arrange
            Container.RegisterType <ObjectWithNamedDependencyProperties>(
                new InjectionProperty(nameof(ObjectWithNamedDependencyProperties.Property), Name));

            // Act
            var other    = "other";
            var resolver = new ValidatingResolverFactory(other);
            var result   = Container.Resolve <ObjectWithNamedDependencyProperties>(
                Override.Property(nameof(ObjectWithNamedDependencyProperties.Property), resolver));

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Property);
            Assert.AreEqual(other, result.Property);
            Assert.AreEqual(typeof(string), resolver.Type);
            Assert.AreEqual(Name, resolver.Name);
        }
        public void Overrides_TypeAndNamePassedToFactoryGeneric()
        {
            // Arrange
            var value    = "value";
            var resolver = new ValidatingResolverFactory(value);

            Container.RegisterType <Service>(
                new InjectionMethod(nameof(Service.NamedDependencyAttribute)));

            // Act
            var result = Container.Resolve <Service>(Override.Parameter <string>("value", resolver));

            // Assert
            Assert.IsNotNull(result.Value);
            Assert.IsInstanceOfType(result.Value, typeof(string));
            Assert.AreEqual(value, result.Value);

            Assert.AreEqual(typeof(string), resolver.Type);
            Assert.AreEqual(Name, resolver.Name);
        }
        public void Overrides_CanOverridePropOnAttributedFactory()
        {
            // Arrange
            Container.RegisterType <ObjectWithThreeProperties>(
                new InjectionProperty(nameof(ObjectWithThreeProperties.Property), Name));

            // Act
            var other    = "other";
            var resolver = new ValidatingResolverFactory(other);
            var result   = Container.Resolve <ObjectWithThreeProperties>(
                Override.Property(nameof(ObjectWithThreeProperties.Property), resolver)
                .OnType <ObjectWithThreeProperties>());

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Name);
            Assert.IsNotNull(result.Container);
            Assert.IsNotNull(result.Property);
            Assert.AreEqual(other, result.Property);
            Assert.AreEqual(typeof(object), resolver.Type);
        }