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)); }
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)); }