コード例 #1
0
ファイル: SharedHandleTests.cs プロジェクト: VeMike/Toolbox
        public void AccessAcquiresResourceOnlyOnce()
        {
            var resource = new MockResource();
            var handle   = new SharedHandle <MockResource>(() => resource);

            handle.Access();
            handle.Access();

            Assert.AreEqual(1, resource.AcquireCalls);
        }
コード例 #2
0
ファイル: SharedHandleTests.cs プロジェクト: VeMike/Toolbox
        public void TokenDisposeDoesNotReleaseResourceIfTokensLeft()
        {
            var resource = new MockResource();
            var handle   = new SharedHandle <MockResource>(() => resource);

            var first = handle.Access();
            var _     = handle.Access();

            first.Dispose();

            Assert.AreEqual(0, resource.ReleaseCalls);
        }
コード例 #3
0
ファイル: SharedHandleTests.cs プロジェクト: VeMike/Toolbox
        public void ResourceIsReacquiredAfterIsWasReleased()
        {
            var resource = new MockResource();
            var handle   = new SharedHandle <MockResource>(() => resource);

            //This acquires the resource
            var first = handle.Access();

            //This releases the resource
            first.Dispose();

            //This should now reacquire the resource
            first = handle.Access();

            Assert.AreEqual(2, resource.AcquireCalls);
        }
コード例 #4
0
ファイル: SharedHandleTests.cs プロジェクト: VeMike/Toolbox
        public void ResourceAccessOnTokenThrowsIfTokenIsDisposed()
        {
            var handle = new SharedHandle <MockResource>(new MockResource());

            var token = handle.Access();

            token.Dispose();

            Assert.Throws <ObjectDisposedException>(() =>
            {
                var _ = token.Resource;
            });
        }
コード例 #5
0
ファイル: SharedHandleTests.cs プロジェクト: VeMike/Toolbox
        public void AccessCreatesAndAcquiredResource()
        {
            var resource = new MockResource();
            var handle   = new SharedHandle <MockResource>(resource);

            var _ = handle.Access();

            Assert.Multiple(() =>
            {
                Assert.AreEqual(1, handle.Tokens);

                Assert.AreEqual(1, resource.AcquireCalls);
            });
        }
コード例 #6
0
ファイル: SharedHandleTests.cs プロジェクト: VeMike/Toolbox
        public void LastTokenReleasesResource()
        {
            var resource = new MockResource();
            var handle   = new SharedHandle <MockResource>(resource);

            var token = handle.Access();

            token.Dispose();

            Assert.Multiple(() =>
            {
                Assert.AreEqual(1, resource.ReleaseCalls);

                Assert.AreEqual(0, handle.Tokens);
            });
        }