Exemplo n.º 1
0
        public void ComplexClassCallingFireSubjectAndSubscribeToNewObservableTracksTwoNewObservablesWhichAreDisposed()
        {
            const int expectedNumberOfDisposables = 5;
            var       model     = new ComplexClass("This constructor doesn't have any calls to subscribe in inheritance hierarchy");
            var       container = (CompositeDisposable)model.DisposableTestContainer;

            Assert.True(container.Count == 0); // Should be no disposables

            model.ComplexMethodOne();          // See method for the disposables (expect 3 per call)
            Assert.True(IsExpectedDisposableTestContainerInitialState(container, 3));

            model.FireSubjectAndSubscribeToNewObservable();
            // The above will have triggered the Subject.Subscribe() set up on ComplexMethodOne
            // and therefore called MethodOne() adding a new disposable, and done another WhenAnyValue
            // Meaning we should now be at 3 + 2 = *5* disposables being tracked
            Assert.True(IsExpectedDisposableTestContainerInitialState(container, expectedNumberOfDisposables));

            // Act
            model.Dispose();

            // Assert
            Assert.True(container.Count == expectedNumberOfDisposables);
            Assert.True(container.OfType <CompositeDisposable>().All(d => d.IsDisposed));
        }