Пример #1
0
        public void DecoratedDisposableResultIsOnlyAddedToDisposablesOnce()
        {
            // Arrange
            var disposable = new DisposableSpy();
            var builder    = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => disposable
            };
            var sut = new DisposableTracker(builder);
            // Act
            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            sut.Create(dummyRequest, dummyContext);
            sut.Create(dummyRequest, dummyContext);
            // Assert
            Assert.Equal(1, sut.Disposables.Count(d => d == disposable));
        }
Пример #2
0
        public void DecoratedDisposableResultIsOnlyAddedToDisposablesOnce()
        {
            // Fixture setup
            var disposable = new DisposableSpy();
            var builder    = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => disposable
            };
            var sut = new DisposableTracker(builder);
            // Exercise system
            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            sut.Create(dummyRequest, dummyContext);
            sut.Create(dummyRequest, dummyContext);
            // Verify outcome
            Assert.Equal(1, sut.Disposables.Count(d => d == disposable));
            // Teardown
        }
Пример #3
0
        public void DisposeRemovesAllDisposables()
        {
            // Arrange
            var builder = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => new DisposableSpy()
            };
            var sut = new DisposableTracker(builder);

            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            sut.Create(dummyRequest, dummyContext);
            sut.Create(dummyRequest, dummyContext);
            sut.Create(dummyRequest, dummyContext);
            // Act
            sut.Dispose();
            // Assert
            Assert.Empty(sut.Disposables);
        }
Пример #4
0
        public void DisposeRemovesAllDisposables()
        {
            // Fixture setup
            var builder = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => new DisposableSpy()
            };
            var sut = new DisposableTracker(builder);

            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            sut.Create(dummyRequest, dummyContext);
            sut.Create(dummyRequest, dummyContext);
            sut.Create(dummyRequest, dummyContext);
            // Exercise system
            sut.Dispose();
            // Verify outcome
            Assert.Empty(sut.Disposables);
            // Teardown
        }
Пример #5
0
        public void DecoratedDisposableResultIsAddedToDisposables()
        {
            // Arrange
            var disposable = new DisposableSpy();
            var builder    = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => disposable
            };
            var sut = new DisposableTracker(builder);
            // Act
            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            sut.Create(dummyRequest, dummyContext);
            // Assert
            Assert.Contains(disposable, sut.Disposables);
        }
Пример #6
0
        public void MultipleDecoratedDisposablesAreAddedToDisposables()
        {
            // Arrange
            var disposables = Enumerable.Repeat <Func <DisposableSpy> >(() => new DisposableSpy(), 3).Select(f => f()).ToList();
            var q           = new Queue <DisposableSpy>(disposables);
            var builder     = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => q.Dequeue()
            };

            var sut = new DisposableTracker(builder);
            // Act
            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            disposables.ForEach(d => sut.Create(dummyRequest, dummyContext));
            // Assert
            Assert.True(disposables.All(ds => sut.Disposables.Any(d => d == ds)));
        }
Пример #7
0
        public void CreateReturnsResultFromDecoratedBuilder()
        {
            // Arrange
            var request        = new object();
            var ctx            = new DelegatingSpecimenContext();
            var expectedResult = new object();

            var builder = new DelegatingSpecimenBuilder
            {
                OnCreate = (r, c) => (r == request) && (c == ctx) ? expectedResult : new NoSpecimen()
            };

            var sut = new DisposableTracker(builder);
            // Act
            var result = sut.Create(request, ctx);

            // Assert
            Assert.Equal(expectedResult, result);
        }
Пример #8
0
        public void DisposeDisposesAllDisposables()
        {
            // Arrange
            var disposables = Enumerable.Repeat <Func <DisposableSpy> >(() => new DisposableSpy(), 3).Select(f => f()).ToList();
            var q           = new Queue <DisposableSpy>(disposables);
            var builder     = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => q.Dequeue()
            };

            var sut = new DisposableTracker(builder);

            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            disposables.ForEach(d => sut.Create(dummyRequest, dummyContext));
            // Act
            sut.Dispose();
            // Assert
            Assert.True(sut.Disposables.Cast <DisposableSpy>().All(ds => ds.Disposed));
        }
Пример #9
0
        public void CreateReturnsResultFromDecoratedBuilder()
        {
            // Fixture setup
            var request        = new object();
            var ctx            = new DelegatingSpecimenContext();
            var expectedResult = new object();

            var builder = new DelegatingSpecimenBuilder
            {
                OnCreate = (r, c) => (r == request) && (c == ctx) ? expectedResult : new NoSpecimen(r)
            };

            var sut = new DisposableTracker(builder);
            // Exercise system
            var result = sut.Create(request, ctx);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }