Unload() public method

Unload the plugin catalog. Warning: all assemblies created at Load are not destroyed, so limit the usage of this function.
public Unload ( ) : void
return void
Exemplo n.º 1
0
        public void PluginsMultipleLoad()
        {
            int pluginLoadIterations = 0;

            int constructorSimulator = 0;
            int constructorWidget    = 0;
            int constructorExtension = 0;

            TestConstants.Prepare();

            GlobalEvents.Hook <PluginsLoaded>((x) =>
            {
                pluginLoadIterations++;

                Assert.AreNotEqual(x.Simulators, null);
                Assert.AreNotEqual(x.Widgets, null);
                Assert.AreNotEqual(x.Extensions, null);

                Assert.AreEqual(x.Simulators.ToList().Count, cfgSimulatorPlugins - cfgSimulatorPluginsInvalid);
                Assert.AreEqual(x.Widgets.ToList().Count, cfgWidgetPlugins - cfgWidgetPluginsInvalid);
                Assert.AreEqual(x.Extensions.ToList().Count, cfgExtensionPlugins - cfgExtensionPluginsInvalid);
            }, true);

            // Count number of constructors.
            GlobalEvents.Hook <PluginTestExtensionConstructor>((x) => constructorExtension++, false);
            GlobalEvents.Hook <PluginTestWidgetConstructor>((x) => constructorWidget++, false);
            GlobalEvents.Hook <PluginTestSimulatorConstructor>((x) => constructorSimulator++, false);

            using (var pluginHost = new SimTelemetry.Domain.Plugins.Plugins())
            {
                pluginHost.PluginDirectory = TestConstants.SimulatorsBinFolder;

                var rand = new Random().Next(1, 5);
                Debug.WriteLine("Initializing " + rand + " times");
                for (int i = 0; i < rand; i++)
                {
                    pluginHost.Load();
                    pluginHost.Unload();
                }
                pluginHost.Load();
                pluginHost.Unload();
            }

            using (var pluginHost = new SimTelemetry.Domain.Plugins.Plugins())
            {
                pluginHost.PluginDirectory = TestConstants.SimulatorsBinFolder;

                pluginHost.Load();
            }

            // Verify everything!
            Assert.AreEqual(constructorSimulator, pluginLoadIterations * cfgSimulatorPlugins);
            Assert.AreEqual(constructorExtension, pluginLoadIterations * cfgExtensionPlugins);
            Assert.AreEqual(constructorWidget, pluginLoadIterations * cfgWidgetPlugins);

            Assert.AreEqual(TestConstants.Warnings,
                            pluginLoadIterations *
                            (cfgWidgetPluginsInvalid + cfgSimulatorPluginsInvalid + cfgExtensionPluginsInvalid));
        }
Exemplo n.º 2
0
        public void PluginsMultipleLoad()
        {
            int pluginLoadIterations = 0;

            int constructorSimulator = 0;
            int constructorWidget = 0;
            int constructorExtension = 0;

            TestConstants.Prepare();

            GlobalEvents.Hook<PluginsLoaded>((x) =>
                                                 {
                                                     pluginLoadIterations++;

                                                     Assert.AreNotEqual(x.Simulators, null);
                                                     Assert.AreNotEqual(x.Widgets, null);
                                                     Assert.AreNotEqual(x.Extensions, null);

                                                     Assert.AreEqual(x.Simulators.ToList().Count, cfgSimulatorPlugins - cfgSimulatorPluginsInvalid);
                                                     Assert.AreEqual(x.Widgets.ToList().Count, cfgWidgetPlugins - cfgWidgetPluginsInvalid);
                                                     Assert.AreEqual(x.Extensions.ToList().Count, cfgExtensionPlugins - cfgExtensionPluginsInvalid);
                                                 }, true);

            // Count number of constructors.
            GlobalEvents.Hook<PluginTestExtensionConstructor>((x) => constructorExtension++, false);
            GlobalEvents.Hook<PluginTestWidgetConstructor>((x) => constructorWidget++, false);
            GlobalEvents.Hook<PluginTestSimulatorConstructor>((x) => constructorSimulator++, false);

            using (var pluginHost = new SimTelemetry.Domain.Plugins.Plugins())
            {
                pluginHost.PluginDirectory = TestConstants.SimulatorsBinFolder;

                var rand = new Random().Next(1, 5);
                Debug.WriteLine("Initializing " + rand + " times");
                for (int i = 0; i < rand; i++)
                {
                    pluginHost.Load();
                    pluginHost.Unload();
                }
                pluginHost.Load();
                pluginHost.Unload();
            }

            using (var pluginHost = new SimTelemetry.Domain.Plugins.Plugins())
            {
                pluginHost.PluginDirectory = TestConstants.SimulatorsBinFolder;

                pluginHost.Load();
            }

            // Verify everything!
            Assert.AreEqual(constructorSimulator, pluginLoadIterations * cfgSimulatorPlugins);
            Assert.AreEqual(constructorExtension, pluginLoadIterations * cfgExtensionPlugins);
            Assert.AreEqual(constructorWidget, pluginLoadIterations * cfgWidgetPlugins);

            Assert.AreEqual(TestConstants.Warnings,
                            pluginLoadIterations *
                            (cfgWidgetPluginsInvalid + cfgSimulatorPluginsInvalid + cfgExtensionPluginsInvalid));
        }