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

            Assert.That(obj.Release(), Is.EqualTo(0));
            Assert.Throws <ObjectDisposedException>(() => obj.AddRef());
        }
Example #2
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 #3
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 #4
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);
        }