public void AddWeakContainerListenerTest()
        {
            var listener = new TestObservable();
            IEventAggregator eventAggregator = CreateEventAggregator();

            eventAggregator.Subscribe(listener);
            eventAggregator.GetObservers().Contains(listener).ShouldBeFalse();
            eventAggregator.GetObservers().Count.ShouldEqual(0);
        }
        public void ClearTest()
        {
            var listener = new GenericHandler <object>();
            IEventAggregator eventAggregator = CreateEventAggregator();

            eventAggregator.Subscribe(listener);
            eventAggregator.GetObservers().Contains(listener).ShouldBeTrue();
            eventAggregator.GetObservers().Count.ShouldEqual(1);

            eventAggregator.Clear();
            eventAggregator.GetObservers().Count.ShouldEqual(0);
        }
        public void AddWeakListenerTest()
        {
            var listener = new GenericHandler <object>();
            IEventAggregator eventAggregator = CreateEventAggregator();

            eventAggregator.Subscribe(listener);
            eventAggregator.GetObservers().Contains(listener).ShouldBeTrue();
            eventAggregator.GetObservers().Count.ShouldEqual(1);

            listener = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            eventAggregator.GetObservers().Count.ShouldEqual(0);
        }
        public void AddInvalidListenerTest()
        {
            IEventAggregator eventAggregator = CreateEventAggregator();

            eventAggregator.Subscribe(new object()).ShouldBeFalse();
            eventAggregator.GetObservers().ShouldBeEmpty();
        }
        private void DisposeInternal()
        {
            //Disposing commands, if need.
            if (Settings.DisposeCommands)
            {
                ReflectionExtensions.DisposeCommands(this);
            }

            ClearBusy();
            ClearPropertyChangedSubscribers();
            var toRemove = _viewModelEventAggregator.GetObservers();

            for (int index = 0; index < toRemove.Count; index++)
            {
                Unsubscribe(toRemove[index]);
            }

            IViewManager viewManager;

            if (IocContainer.TryGet(out viewManager))
            {
                viewManager.CleanupViewAsync(this);
            }

            _viewModelProvider = null;
            //Disposing ioc adapter.
            if (Settings.DisposeIocContainer && _iocContainer != null)
            {
                _iocContainer.Dispose();
            }

            _disposeCancellationToken.Cancel();
            Tracer.TraceViewModel(AuditAction.Disposed, this);
            Settings.Metadata.Clear();
        }