public void Dispose_DisposingSiteEventHandler_InvokesEventHandlerAndRemovesSiteFromComponent(bool disposing)
        {
            bool calledDisposed = false;
            var  site           = new Site();
            var  component      = new SubMarshalByValueComponent()
            {
                Site = site
            };

            component.Disposed += (sender, e) =>
            {
                Assert.Same(component, sender);
                Assert.Same(EventArgs.Empty, e);
                calledDisposed = true;
            };

            Assert.False(calledDisposed);
            site.Container.Add(component);
            component.DisposeEntryPoint(disposing);
            Assert.Equal(disposing, calledDisposed);
            Assert.Empty(site.Container.Components);

            // Call multiple times.
            component.Site = site;
            site.Container = null;
            calledDisposed = false;
            component.DisposeEntryPoint(disposing);
            Assert.Equal(disposing, calledDisposed);
        }
        public void Dispose_DisposingNoSiteNoEventHandler_Nop(bool disposing)
        {
            var component = new SubMarshalByValueComponent();

            component.DisposeEntryPoint(disposing);

            // With events.
            Assert.NotNull(component.EventsEntryPoint);
            component.DisposeEntryPoint(disposing);
        }
        public void Dispose_DisposingNoSiteEventHandler_InvokesEventHandler(bool disposing)
        {
            bool calledDisposed = false;
            var  component      = new SubMarshalByValueComponent();

            component.Disposed += (sender, e) =>
            {
                Assert.Same(component, sender);
                Assert.Same(EventArgs.Empty, e);
                calledDisposed = true;
            };

            Assert.False(calledDisposed);
            component.DisposeEntryPoint(disposing);
            Assert.Equal(disposing, calledDisposed);

            // Call multiple times.
            calledDisposed = false;
            component.DisposeEntryPoint(disposing);
            Assert.Equal(disposing, calledDisposed);
        }