Example #1
0
        public static async Task <ResponseStreamHolder> CreateAsync(DisposableBox <HttpResponseMessage> responseBox)
        {
            using DisposableBox <ResponseStreamHolder> holderBox = new(new(responseBox.Release()));
            holderBox.Value.Stream = await holderBox.Value._response.Content.ReadAsStreamAsync().ConfigureAwait(false);

            return(holderBox.Release());
        }
 public void Construct_Null()
 {
     using (var box = new DisposableBox <TestDisposable>(null))
     {
         box.Object.Should().BeNull();
         box.IsOwned.Should().BeFalse(); // null can't be owned
     }
 }
 public void Construct_Default()
 {
     using (var box = new DisposableBox <TestDisposable>())
     {
         box.Object.Should().BeNull();
         box.IsOwned.Should().BeFalse();
     }
 }
        public void Dispose_Null()
        {
            var box = new DisposableBox <TestDisposable>(null);

            box.Dispose();

            box.Invoking(b => { var _ = b.Object; }).Should().Throw <ObjectDisposedException>();
            box.Invoking(b => { var _ = b.IsOwned; }).Should().Throw <ObjectDisposedException>();
        }
        public void Set_NullToNull()
        {
            using (var box = new DisposableBox <TestDisposable>())
            {
                box.Set(null);

                box.Object.Should().BeNull();
                box.IsOwned.Should().BeFalse();
            }
        }
        public void Take_Disposed()
        {
            var obj = new TestDisposable();
            var box = new DisposableBox <TestDisposable>();

            box.Dispose();

            box.Invoking(b => b.Take())
            .Should().Throw <ObjectDisposedException>();
        }
        public void Set_Disposed()
        {
            var obj = new TestDisposable();
            var box = new DisposableBox <TestDisposable>();

            box.Dispose();

            box.Invoking(b => b.Set(obj, owned: false))
            .Should().Throw <ObjectDisposedException>();
        }
        public void Construct_NotOwned()
        {
            var obj = new TestDisposable();

            using (var box = new DisposableBox <TestDisposable>(obj, owned: false))
            {
                box.Object.Should().BeSameAs(obj);
                box.IsOwned.Should().BeFalse();
            }

            obj.IsDisposed.Should().BeFalse();
        }
        public void Dispose_NotOwned()
        {
            var obj = new TestDisposable();
            var box = new DisposableBox <TestDisposable>(obj, owned: false);

            box.Dispose();

            box.Invoking(b => { var _ = b.Object; }).Should().Throw <ObjectDisposedException>();
            box.Invoking(b => { var _ = b.IsOwned; }).Should().Throw <ObjectDisposedException>();

            obj.IsDisposed.Should().BeFalse();
        }
        public void Dispose_Owned_Twice()
        {
            var obj = new TestDisposable();
            var box = new DisposableBox <TestDisposable>(obj);

            box.Dispose();
            box.Dispose();

            box.Invoking(b => { var _ = b.Object; }).Should().Throw <ObjectDisposedException>();
            box.Invoking(b => { var _ = b.IsOwned; }).Should().Throw <ObjectDisposedException>();

            obj.IsDisposed.Should().BeTrue();
        }
        public void Clear_Owned()
        {
            var obj = new TestDisposable();

            using (var box = new DisposableBox <TestDisposable>(obj))
            {
                box.Clear();
                obj.IsDisposed.Should().BeTrue();

                box.Object.Should().BeNull();
                box.IsOwned.Should().BeFalse(); // null can't be owned
            }
        }
        public void Set_NotOwnedToNull()
        {
            var obj = new TestDisposable();

            using (var box = new DisposableBox <TestDisposable>(obj, owned: false))
            {
                box.Set(null);
                obj.IsDisposed.Should().BeFalse();

                box.Object.Should().BeNull();
                box.IsOwned.Should().BeFalse(); // null can't be owned
            }
        }
        public void Set_NullToOwned()
        {
            var obj = new TestDisposable();

            using (var box = new DisposableBox <TestDisposable>())
            {
                box.Set(obj);
                obj.IsDisposed.Should().BeFalse();

                box.Object.Should().BeSameAs(obj);
                box.IsOwned.Should().BeTrue();
            }

            obj.IsDisposed.Should().BeTrue();
        }
        public void Take_NotOwned()
        {
            var obj = new TestDisposable();

            using (var box = new DisposableBox <TestDisposable>(obj, owned: false))
            {
                box.Take().Should().BeSameAs(obj);
                obj.IsDisposed.Should().BeFalse();

                box.Object.Should().BeNull();
                box.IsOwned.Should().BeFalse(); // null can't be owned
            }

            obj.IsDisposed.Should().BeFalse();
        }
        public void Set_OwnedToDifferentNotOwned()
        {
            var objA = new TestDisposable();
            var objB = new TestDisposable();

            using (var box = new DisposableBox <TestDisposable>(objA))
            {
                box.Set(objB, owned: false);
                objA.IsDisposed.Should().BeTrue();
                objB.IsDisposed.Should().BeFalse();

                box.Object.Should().BeSameAs(objB);
                box.IsOwned.Should().BeFalse();
            }

            objB.IsDisposed.Should().BeFalse();
        }