Beispiel #1
0
        public void ShouldInheritParentRegistration()
        {
            var parent     = new TargetContainer();
            var overriding = new OverridingTargetContainer(parent);

            var parentTarget = new TestTarget(typeof(int), useFallBack: false, supportsType: true);

            parent.Register(parentTarget);

            Assert.Same(parentTarget, overriding.Fetch(typeof(int)));
        }
Beispiel #2
0
        public void Covariant_ShouldFetch(string name, Type tTarget, Type toFetch)
        {
            // Arrange
            ITargetContainer targets = new TargetContainer();
            var target = new TestTarget(tTarget, false, true, ScopeBehaviour.None);

            targets.Register(target);

            // Act
            var fetched = targets.Fetch(toFetch);

            // Assert
            Assert.Equal(target.Id, fetched.Id);
        }
Beispiel #3
0
        public void EnumerableTargetShouldReturnAllItems()
        {
            var parent     = new TargetContainer();
            var overriding = new OverridingTargetContainer(parent);

            var parentTarget = new TestTarget(typeof(int), useFallBack: false, supportsType: true);

            parent.Register(parentTarget);

            var overrideTarget = new TestTarget(typeof(int), useFallBack: false, supportsType: true);

            overriding.Register(overrideTarget);

            var fetched = Assert.IsType <EnumerableTarget>(overriding.Fetch(typeof(IEnumerable <int>)));

            Assert.Equal(2, fetched.Targets.Count());
        }
Beispiel #4
0
        public void FetchAllShouldReturnAllTargets()
        {
            var parent     = new TargetContainer();
            var overriding = new OverridingTargetContainer(parent);

            var parentTarget = new TestTarget(typeof(int), useFallBack: false, supportsType: true);

            parent.Register(parentTarget);

            var overrideTarget = new TestTarget(typeof(int), useFallBack: false, supportsType: true);

            overriding.Register(overrideTarget);

            var fetched = overriding.FetchAll(typeof(int)).ToArray();

            Assert.Equal(2, fetched.Length);
            Assert.Same(parentTarget, fetched[0]);
            Assert.Same(overrideTarget, fetched[1]);
        }
Beispiel #5
0
        public void ShouldFetchContravariant(Type tTarget, Type toFetch)
        {
            // this theory specifically tests that if we register a target for a generic which
            // has contravariant type parameters, then it will be found automatically.

            // the actual handling of creating an instance is tested in the compiler spec tests
            // covering the ConstructorTarget

            // Arrange
            ITargetContainer targets = new TargetContainer();
            var target = new TestTarget(tTarget, false, true, ScopeBehaviour.None);

            targets.Register(target);

            // Act
            var fetched = targets.Fetch(toFetch);

            // Assert
            Assert.Equal(target.Id, fetched.Id);
        }
        public void ShouldCreateOnlyOneExplicitNonDisposable()
        {
            // note - this works because we pass the same target both times
            using (var scope = new DisposingContainerScope(new Container()))
            {
                Func <ResolveContext, NoCtor> factory = c => new NoCtor();
                var target = new TestTarget();
                var result = scope.ActivateExplicit(
                    new ResolveContext(scope, typeof(NoCtor)),
                    target.Id,
                    factory);

                Assert.NotNull(result);

                var result2 = scope.ActivateExplicit(
                    new ResolveContext(scope, typeof(NoCtor)),
                    target.Id,
                    factory);

                Assert.Same(result, result2);
            }
        }
        public void ChildScopeShouldGetItsOwnExplicitInstance()
        {
            using (var scope = new DisposingContainerScope(new Container()))
            {
                Func <ResolveContext, NoCtor> factory = c => new NoCtor();
                var target = new TestTarget();
                var result = scope.ActivateExplicit(
                    new ResolveContext(scope, typeof(NoCtor)),
                    target.Id,
                    factory);

                Assert.NotNull(result);

                using (var childScope = scope.CreateScope())
                {
                    var result2 = childScope.ActivateExplicit(
                        new ResolveContext(childScope, typeof(NoCtor)),
                        target.Id,
                        factory);

                    Assert.NotSame(result, result2);
                }
            }
        }