Beispiel #1
0
        public void Resolve_UsingAutoFactoryOfInterface_ThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>();
            });

            var instance = container.Resolve<IFoo>();
        }
Beispiel #2
0
        public void TryResolve_NotRegisteredServiceWithMultipuleArguments_DontThrowsRegistrationExceptionAndReturnsNull()
        {
            var container = new NCopContainer(registry => { });
            var instance  = container.TryResolve <string, int, IFoo>("NCop", 9);

            Assert.IsNull(instance);
        }
Beispiel #3
0
        public void TryResolve_NotRegisteredService_DontThrowsRegistrationExceptionAndReturnsNull()
        {
            var container = new NCopContainer(registry => { });
            var instance  = container.TryResolve <IFoo>();

            Assert.IsNull(instance);
        }
        public void Resolve_UsingAsPerHttpRequestExpressionRegistrationWhenThereIsNoHttpContext_ThrowsLifetimeStragtegyException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerHttpRequest();
            });

            container.Resolve <Foo>();
        }
Beispiel #5
0
        public void Resolve_UsingAutoFactoryOfInterface_ThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>();
            });

            var instance = container.Resolve <IFoo>();
        }
Beispiel #6
0
        public void ResolveOfDependetType_UsingFactoryThatCallsResolveOfDependencyObject_ReturnsTheResolvedInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>();
                registry.Register<IBar>(r => new Bar(r.Resolve<Foo>()));
            });

            Assert.IsNotNull(container.Resolve<IBar>());
        }
        public void Resolve_UsingAutoFactoryOfInterfaceThatBindsToSelf_ThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().ToSelf();
            });

            container.Resolve <IFoo>();
        }
Beispiel #8
0
        public void Resolve_UsingAutoFactoryAndCastingUsingTheAsExpresion_ReturnsTheResolvedInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
            });

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

            Assert.IsNotNull(instance);
        }
Beispiel #9
0
        public void ResolveOfDependetType_UsingFactoryThatCallsResolveOfDependencyObject_ReturnsTheResolvedInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>();
                registry.Register <IBar>((r) => new Bar(r.Resolve <Foo>()));
            });

            Assert.IsNotNull(container.Resolve <IBar>());
        }
Beispiel #10
0
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorAndWithoutDependencyAttribute_ThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <AmbiguousConstructor>();
            });

            var instance = container.Resolve <AmbiguousConstructor>();
        }
Beispiel #11
0
        public void Resolve_UsingFactoryWithTypedArgument_ReturnsTheResolvedInstanceThatHoldsTheResultOfTypedArgument() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo, string>((r, name) => new Foo(name));
            });

            var instance = container.Resolve<string, IFoo>("Test");

            Assert.IsNotNull(instance);
            Assert.AreEqual(instance.Name, "Test");
        }
Beispiel #12
0
        public void Resolve_UsingAsSingletonExpressionRegistrationWithAutoFactory_ReturnsTheSameObjectForDifferentResolveCalls() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton();
            });

            var instance = container.Resolve<Foo>();
            var instatance2 = container.Resolve<Foo>();

            Assert.AreSame(instance, instatance2);
        }
Beispiel #13
0
        public void Resolve_UsingAutoFactoryAndCastingUsingTheAsExpresion_ReturnsTheResolvedInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
            });

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

            Assert.IsNotNull(instance);
        }
Beispiel #14
0
        public void Resolve_UsingAutoFactoryAndCastingWithAsExpressionAndAfterThatUsingTheAsSingletonExpressionRegistration_ReturnsTheSameObjectForDifferentResolveCalls()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>().AsSingleton();
            });

            var instance    = container.Resolve <IFoo>();
            var instatance2 = container.Resolve <IFoo>();

            Assert.AreSame(instance, instatance2);
        }
Beispiel #15
0
        public void Resolve_InChildContainerUsesParentContainer_ReusesParentContainerAndReturnsTheReolvedObject()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance       = childContainer.Resolve <Foo>();

            Assert.IsNotNull(instance);
        }
Beispiel #16
0
        public void Resolve_UsingAsSingletonExpressionRegistrationWithFactory_ReturnsTheSameObjectForDifferentResolveCalls()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>((reg) => new Foo()).AsSingleton();
            });

            var instance    = container.Resolve <Foo>();
            var instatance2 = container.Resolve <Foo>();

            Assert.AreSame(instance, instatance2);
        }
Beispiel #17
0
        public void AutoRegister_WithPropertyDependency_ReturnsTheResolvedInstanceFilledWithTheAutoResolvedProperty()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <PropertyDependency>();
            });

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

            Assert.IsNotNull(instance.Foo);
        }
Beispiel #18
0
        public void AutoRegister_WithConstructorDependencyThatHasOneDependentArgument_ReturnsTheResolvedInstanceFilledWithTheDependentArgument()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <CtorDependency>();
            });

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

            Assert.IsNotNull(instance.Foo);
        }
Beispiel #19
0
        public void Resolve_UsingFactoryWithTypedArgument_ReturnsTheResolvedInstanceThatHoldsTheResultOfTypedArgument()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo, string>((r, name) => new Foo(name));
            });

            var instance = container.Resolve <string, IFoo>("Test");

            Assert.IsNotNull(instance);
            Assert.AreEqual(instance.Name, "Test");
        }
Beispiel #20
0
        public void Resolve_UsingNamedExpressionOfSpecificTypeAndAutoWithoutNameOfTheSameType_ReturnsDifferentInstancesOfTheSameType() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().Named("NCop");
                registry.Register<Foo>();
            });

            var instance = container.Resolve<Foo>();
            var namedInstance = container.ResolveNamed<Foo>("NCop");

            Assert.AreNotSame(namedInstance, instance);
        }
Beispiel #21
0
        public void Resolve_UsingAutoFactoryThatBindsToSelf_ReturnsTheResolvedInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().ToSelf();
            });

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

            Assert.IsNotNull(instance);
            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
Beispiel #22
0
        public void Resolve_UsingNamedExpressionOfSpecificTypeAndAutoWithoutNameOfTheSameType_ReturnsDifferentInstancesOfTheSameType()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().Named("NCop");
                registry.Register <Foo>();
            });

            var instance      = container.Resolve <Foo>();
            var namedInstance = container.ResolveNamed <Foo>("NCop");

            Assert.AreNotSame(namedInstance, instance);
        }
Beispiel #23
0
        public void AutoRegister_OfTypeThatHasTwoDependentPropertiesThatOneOfThemIsAnnotatedWithIgnoreDependency_ReturnsResolvedInstanceWithOnlyOneDependentProperty()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <IgnoreDependencyClass>();
            });

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

            Assert.IsNotNull(instance.Injected);
            Assert.IsNull(instance.Ignored);
        }
Beispiel #24
0
        public void AutoRegister_OfInterfaceAndCastingWithAsExpressionToConcreteTypeThatHasOneDependentProperty_ReturnsResolvedInstanceWithFilledProperty()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Baz>().ToSelf();
                registry.RegisterAuto <IFoo>().As <Boo>();
            });

            var instance = container.Resolve <IFoo>() as Boo;

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Baz);
        }
Beispiel #25
0
        public void ResolveInChildContainerAndInParentContainer_UsingAutoRegistrationInParentContainerAsSingletonReusedWithinContainer_ReturnsTheSameInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().ReusedWithinHierarchy();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance       = container.Resolve <Foo>();
            var instance2      = childContainer.Resolve <Foo>();

            Assert.AreSame(instance, instance2);
        }
Beispiel #26
0
        public void DisposeOfContainer_OfDisposableObjectWhichIsOwnedExternally_ReturnsNotDispsoedIndication()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().OwnedExternally();
            });

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

            Assert.IsFalse(instance.IsDisposed);
            container.Dispose();
            Assert.IsFalse(instance.IsDisposed);
        }
Beispiel #27
0
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorWithDependencyAttribute_ReturnsResolvedInstanceAndDontThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <AmbiguousConstructorFixedWithDependencyAttribute>();
            });

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

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Foo);
        }
Beispiel #28
0
        public void AutoRegister_OfTypeThatHasTwoPropertiesThatOneOfThemIsDependentAndTheOtherFilledByDependentConstructor_ReturnsResolvedInstanceWithBothPropertiesFilled()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>().AsSingleton();
                registry.RegisterAuto <Bar>();
            });

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

            Assert.IsNotNull(instance.ByCtor);
            Assert.IsNotNull(instance.ByProperty);
            Assert.AreSame(instance.ByCtor, instance.ByProperty);
        }
Beispiel #29
0
        public void Resolve_UsingAsPerHttpRequestExpressionRegistrationWhenUsingTwoDiffrentContext_ReturnsDiffrentInstancesPerHttpContextInstance()
        {
            Foo foo       = null;
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerHttpRequest();
            });

            SetHttpContext();
            foo = container.Resolve <Foo>();
            Assert.AreEqual(foo, container.Resolve <Foo>());
            SetHttpContext();
            Assert.AreNotEqual(foo, container.Resolve <Foo>());
        }
Beispiel #30
0
        public void DisposeOfParentContainer_OfDisposableObjectWhichIsOwnedByChildContainer_ReturnsDispsoedIndication()
        {
            var parentContainer = new NCopContainer(registry => {
            });

            var childContainer = parentContainer.CreateChildContainer(registry => {
                registry.Register <Foo>();
            });

            var instance = childContainer.Resolve <Foo>();

            Assert.IsFalse(instance.IsDisposed);
            parentContainer.Dispose();
            Assert.IsFalse(instance.IsDisposed);
        }
Beispiel #31
0
        public void DisposeOfContainer_OfDisposableNamedObjectWithAnArgumentWhichIsOwnedExternally_ReturnsTheNamedInstanceWithNotDispsoedIndication()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo, string>((c, name) => new Foo(name))
                .Named("NCop")
                .OwnedExternally();
            });

            var instance = container.TryResolve <string, IFoo>("NCop", "NCop") as Foo;

            container.Dispose();

            Assert.IsNotNull(instance);
            Assert.IsTrue(instance.Name.Equals("NCop"));
            Assert.IsFalse(instance.IsDisposed);
        }
Beispiel #32
0
        public async Task Resolve_UsingAsPerThreadSingletonExpressionRegistrationWithAutoFactory_ReturnsDiffrentOjectsForDiffrentThreadsAndTheSameObjectForDifferentResolveCallsOnTheSameThread()
        {
            Foo foo1 = null;
            Foo foo2 = null;

            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerThread();
            });

            foo1 = await Task.Factory.StartNew(() => container.Resolve <Foo>());

            foo2 = await Task.Factory.StartNew(() => container.Resolve <Foo>());

            Assert.AreNotEqual(foo1, foo2);
            Assert.AreEqual(container.Resolve <Foo>(), container.Resolve <Foo>());
        }
Beispiel #33
0
        public async Task Resolve_UsingAsPerHybridRequestExpressionRegistrationWhenHttpContextIsNotAvailable_ReturnsTheSameInstancePerThreadRequest()
        {
            Foo           foo       = null;
            Foo           foo2      = null;
            NCopContainer container = null;

            container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerHybridRequest();
            });

            foo = container.Resolve <Foo>();
            Assert.AreEqual(foo, container.Resolve <Foo>());
            foo2 = await Task.Factory.StartNew(() => container.Resolve <Foo>());

            Assert.AreEqual(foo, foo2);
        }
Beispiel #34
0
        public void DisposeOfContainer_OfDisposableNamedObjectWithAnArgumentWhichIsOwnedExternally_ReturnsTheNamedInstanceWithNotDispsoedIndication() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo, string>((c, name) => new Foo(name))
                        .Named("NCop")
                        .OwnedExternally();
            });

            var instance = container.TryResolve<string, IFoo>("NCop", "NCop") as Foo;

            container.Dispose();

            Assert.IsNotNull(instance);
            Assert.IsTrue(instance.Name.Equals("NCop"));
            Assert.IsFalse(instance.IsDisposed);
        }
Beispiel #35
0
        public void Resolve_UsingAsPerHttpRequestExpressionRegistrationWhenThereIsNoHttpContext_ThrowsLifetimeStragtegyException() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerHttpRequest();
            });

            container.Resolve<Foo>();
        }
Beispiel #36
0
        public void TryResolve_NotRegisteredServiceWithMultipuleArguments_DontThrowsRegistrationExceptionAndReturnsNull() {
            var container = new NCopContainer(registry => { });
            var instance = container.TryResolve<string, int, IFoo>("NCop", 9);

            Assert.IsNull(instance);
        }
Beispiel #37
0
        public void Resolve_UsingAsPerHybridRequestExpressionRegistrationWhenHttpContextIsAvailable_ReturnsDiffrentInstancesPerHttpContextInstance() {
            Foo foo = null;
            NCopContainer container = null;

            SetHttpContext();
            container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerHybridRequest();
            });

            foo = container.Resolve<Foo>();
            Assert.AreEqual(foo, container.Resolve<Foo>());
            SetHttpContext();
            Assert.AreNotEqual(foo, container.Resolve<Foo>());
        }
Beispiel #38
0
        public void AutoRegister_WithConstructorDependencyThatHasOneDependentArgument_ReturnsTheResolvedInstanceFilledWithTheDependentArgument() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<CtorDependency>();
            });

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

            Assert.IsNotNull(instance.Foo);
        }
Beispiel #39
0
        public void Resolve_InChildContainerUsesParentContainer_ReusesParentContainerAndReturnsTheReolvedObject() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance = childContainer.Resolve<Foo>();

            Assert.IsNotNull(instance);
        }
Beispiel #40
0
        public void DisposeOfContainer_OfDisposableObjectWhichIsOwnedExternally_ReturnsNotDispsoedIndication() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().OwnedExternally();
            });

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

            Assert.IsFalse(instance.IsDisposed);
            container.Dispose();
            Assert.IsFalse(instance.IsDisposed);
        }
Beispiel #41
0
        public void AutoRegister_WithPropertyDependency_ReturnsTheResolvedInstanceFilledWithTheAutoResolvedProperty() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<PropertyDependency>();
            });

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

            Assert.IsNotNull(instance.Foo);
        }
Beispiel #42
0
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorAndWithoutDependencyAttribute_ThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<AmbiguousConstructor>();
            });

            var instance = container.Resolve<AmbiguousConstructor>();
        }
 public CompositeContainerAdapter()
 {
     container = new NCopContainer();
 }
Beispiel #44
0
        public void Resolve_UsingAutoFactoryAndCastingWithAsExpressionAndAfterThatUsingTheAsSingletonExpressionRegistration_ReturnsTheSameObjectForDifferentResolveCalls() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>().AsSingleton();
            });

            var instance = container.Resolve<IFoo>();
            var instatance2 = container.Resolve<IFoo>();

            Assert.AreSame(instance, instatance2);
        }
Beispiel #45
0
        public void TryResolve_NotRegisteredService_DontThrowsRegistrationExceptionAndReturnsNull() {
            var container = new NCopContainer(registry => { });
            var instance = container.TryResolve<IFoo>();

            Assert.IsNull(instance);
        }
Beispiel #46
0
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorWithDependencyAttribute_ReturnsResolvedInstanceAndDontThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<AmbiguousConstructorFixedWithDependencyAttribute>();
            });

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

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Foo);
        }
Beispiel #47
0
        public void ResolveInChildContainerAndInParentContainer_UsingAutoRegistrationInParentContainerAsSingletoneReusedWithinHierarchy_ReturnsNotTheSameInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().WithinContainer();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance1 = container.Resolve<Foo>();
            var instance2 = container.Resolve<Foo>();
            var instance3 = childContainer.Resolve<Foo>();
            var instance4 = childContainer.Resolve<Foo>();

            Assert.AreSame(instance1, instance2);
            Assert.AreNotSame(instance1, instance3);
            Assert.AreSame(instance3, instance4);
        }
Beispiel #48
0
        public void AutoRegister_OfInterfaceAndCastingWithAsExpressionToConcreteTypeThatHasOneDependentProperty_ReturnsResolvedInstanceWithFilledProperty() {
            var container = new NCopContainer(registry => {
                registry.Register<Baz>().ToSelf();
                registry.RegisterAuto<IFoo>().From<Boo>();
            });

            var instance = container.Resolve<IFoo>() as Boo;

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Baz);
        }
Beispiel #49
0
        public void AutoRegister_OfTypeThatHasTwoPropertiesThatOneOfThemIsDependentAndTheOtherFilledByDependentConstructor_ReturnsResolvedInstanceWithBothPropertiesFilled() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>().AsSingleton();
                registry.RegisterAuto<Bar>();
            });

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

            Assert.IsNotNull(instance.ByCtor);
            Assert.IsNotNull(instance.ByProperty);
            Assert.AreSame(instance.ByCtor, instance.ByProperty);
        }
Beispiel #50
0
        public async Task Resolve_UsingAsPerHybridRequestExpressionRegistrationWhenHttpContextIsNotAvailable_ReturnsTheSameInstancePerThreadRequest() {
            Foo foo = null;
            Foo foo2 = null;
            NCopContainer container = null;

            container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerHybridRequest();
            });

            foo = container.Resolve<Foo>();
            Assert.AreEqual(foo, container.Resolve<Foo>());
            foo2 = await Task.Factory.StartNew(() => container.Resolve<Foo>());
            Assert.AreEqual(foo, foo2);
        }
Beispiel #51
0
 public void TryResolve_NotRegisteredService_ThrowsRegistrationException()
 {
     var container = new NCopContainer(registry => { });
     var instance  = container.Resolve <IFoo>();
 }
Beispiel #52
0
        public void ResolveInChildContainerAndInParentContainer_UsingSingletonRegistrationInParentContainer_ReturnsTheSameInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().WithinHierarchy();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance = container.Resolve<Foo>();
            var instance2 = childContainer.Resolve<Foo>();

            Assert.AreSame(instance, instance2);
        }
Beispiel #53
0
        public void Resolve_UsingAutoFactoryOfInterfaceThatBindsToSelf_ThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().ToSelf();
            });

            container.Resolve<IFoo>();
        }
Beispiel #54
0
        public void Resolve_UsingAutoFactoryThatBindsToSelf_ReturnsTheResolvedInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().ToSelf();
            });

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

            Assert.IsNotNull(instance);
            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
Beispiel #55
0
 public void TryResolve_NotRegisteredService_ThrowsRegistrationException() {
     var container = new NCopContainer(registry => { });
     container.Resolve<IFoo>();
 }
Beispiel #56
0
        public void AutoRegister_OfTypeThatHasTwoDependentPropertiesThatOneOfThemIsAnnotatedWithIgnoreDependency_ReturnsResolvedInstanceWithOnlyOneDependentProperty() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<IgnoreDependencyClass>();
            });

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

            Assert.IsNotNull(instance.Injected);
            Assert.IsNull(instance.Ignored);
        }
Beispiel #57
0
        public async Task Resolve_UsingAsPerThreadSingletonExpressionRegistrationWithAutoFactory_ReturnsDiffrentOjectsForDiffrentThreadsAndTheSameObjectForDifferentResolveCallsOnTheSameThread() {
            Foo foo1 = null;
            Foo foo2 = null;

            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerThread();
            });

            foo1 = await Task.Factory.StartNew(() => container.Resolve<Foo>());
            foo2 = await Task.Factory.StartNew(() => container.Resolve<Foo>());

            Assert.AreNotEqual(foo1, foo2);
            Assert.AreEqual(container.Resolve<Foo>(), container.Resolve<Foo>());
        }
Beispiel #58
0
        public void DisposeOfParentContainer_OfDisposableObjectWhichIsOwnedByChildContainer_ReturnsDispsoedIndication() {
            var parentContainer = new NCopContainer(registry => {
            });

            var childContainer = parentContainer.CreateChildContainer(registry => {
                registry.Register<Foo>();
            });

            var instance = childContainer.Resolve<Foo>();

            Assert.IsFalse(instance.IsDisposed);
            parentContainer.Dispose();
            Assert.IsFalse(instance.IsDisposed);
        }