Example #1
0
        public void ReleaseAsync_ShouldThrowIfTheObjectWasDisposed()
        {
            var obj = new DisposeByRefObject();

            Assert.That(obj.Release(), Is.EqualTo(0));
            Assert.ThrowsAsync <ObjectDisposedException>(async() => await obj.ReleaseAsync());
        }
Example #2
0
        public void AddRef_ShouldThrowIfTheObjectWasDisposed()
        {
            var obj = new DisposeByRefObject();

            Assert.That(obj.Release(), Is.EqualTo(0));
            Assert.Throws <ObjectDisposedException>(() => obj.AddRef());
        }
Example #3
0
        public void Release_ShouldDecrementTheReferenceCount()
        {
            var obj = new DisposeByRefObject();

            Assert.That(obj.RefCount, Is.EqualTo(1));
            Assert.That(obj.Release(), Is.EqualTo(0));
            Assert.That(obj.RefCount, Is.EqualTo(0));
        }
Example #4
0
        public void AddRef_ShouldIncrementTheReferenceCount()
        {
            var obj = new DisposeByRefObject();

            Assert.That(obj.RefCount, Is.EqualTo(1));
            Assert.That(obj.AddRef(), Is.EqualTo(2));
            Assert.That(obj.RefCount, Is.EqualTo(2));
        }
Example #5
0
        public async Task ReleaseAsync_ShouldDisposeTheObjectIfRefCountReachesTheZero()
        {
            var obj = new DisposeByRefObject();

            obj.AddRef();
            Assert.That(obj.ReleaseAsync().Result, Is.EqualTo(1));
            Assert.That(obj.Disposed, Is.False);
            Assert.That(await obj.ReleaseAsync(), Is.EqualTo(0));
            Assert.That(obj.Disposed);
        }
Example #6
0
        public void Release_ShouldDisposeTheObjectIfRefCountReachesTheZero()
        {
            var obj = new DisposeByRefObject();

            obj.AddRef();
            Assert.That(obj.Release(), Is.EqualTo(1));
            Assert.That(obj.Disposed, Is.False);
            Assert.That(obj.Release(), Is.EqualTo(0));
            Assert.That(obj.Disposed);
        }
Example #7
0
        public void DisposeAsync_ShouldNotBeCalledDirectly()
        {
            var obj = new DisposeByRefObject();

            Assert.ThrowsAsync <InvalidOperationException>(async() => await obj.DisposeAsync(), Resources.ARBITRARY_RELEASE);
        }
Example #8
0
        public void Dispose_ShouldNotBeCalledDirectly()
        {
            var obj = new DisposeByRefObject();

            Assert.Throws <InvalidOperationException>(obj.Dispose, Resources.ARBITRARY_RELEASE);
        }