コード例 #1
0
ファイル: ScopeTest.cs プロジェクト: cig-dev/IoCContainer
        public void ShouldSupportMultiActivation()
        {
            // Given
            using var scope1 = new Scope(new LockObject(), 1);

            // When
            using var token1 = scope1.Activate();
            using var token2 = scope1.Activate();
            using var token3 = scope1.Activate();

            // Then
            Scope.Current.ShouldBe(scope1);
        }
コード例 #2
0
        public void ShouldCreateSingleInstance()
        {
            // Given
            var lifetime = new ScopeSingletonLifetime();
            var resolver = lifetime.Compile(() => new object());

            // When
            object instance11;
            object instance12;
            object instance21;
            object instance22;

            using (var scope1 = new Scope(new LockObject()))
                using (var scope2 = new Scope(new LockObject()))
                {
                    using (scope1.Activate())
                    {
                        instance11 = resolver(Mock.Of <IContainer>());
                        using (scope2.Activate())
                        {
                            instance21 = resolver(Mock.Of <IContainer>());
                        }

                        instance12 = resolver(Mock.Of <IContainer>());
                    }

                    using (scope2.Activate())
                    {
                        instance22 = resolver(Mock.Of <IContainer>());
                    }
                }

            // Then
            instance11.ShouldBe(instance12);
            instance21.ShouldBe(instance22);
            instance11.ShouldNotBe(instance22);
        }
コード例 #3
0
ファイル: ScopeTest.cs プロジェクト: cig-dev/IoCContainer
        public void ActiveScopeShouldAccessibleViaCurrentProperty()
        {
            // Given
            using var scope1 = new Scope(new LockObject());
            using var scope2 = new Scope(new LockObject());

            // When
            using var token1 = scope1.Activate();
            using var token2 = scope2.Activate();

            // Then
            Scope.Current.ShouldBe(scope2);
            token2.Dispose();
            Scope.Current.ShouldBe(scope1);
            token1.Dispose();
        }