public void ConfigurationStoreSetIndividual_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new PluginConfigurationStore(optionsBuilder); var configSection = store.Get <ExampleConfigurationSection>(); store.Set(configSection); configSection.Configuration.ISOPath0 = "TestEqual"; configSection.Configuration.FullscreenResolution = FullscreenResolution.Resolution1152X648; configSection.Configuration.Fullscreen = false; store.Set(configSection); configSection.Configuration.FullscreenResolution = FullscreenResolution.Resolution1280X768; store.Set(configSection.Configuration.Values["FullscreenResolution"].Guid, configSection.Configuration.Values["FullscreenResolution"].Value); var retrievedConfig = store.Get <ExampleConfigurationSection>(); Assert.NotNull(retrievedConfig); Assert.NotNull(retrievedConfig); Assert.Equal(configSection.Configuration.ISOPath0, retrievedConfig.Configuration.ISOPath0); Assert.Equal(configSection.Configuration.FullscreenResolution, retrievedConfig.Configuration.FullscreenResolution); Assert.Equal(configSection.Configuration.Fullscreen, retrievedConfig.Configuration.Fullscreen); }
public void PluginManagerRegisterProvisioned_Test() { var fs = new PhysicalFileSystem(); var appDataDirectory = new DirectoryInfo(Path.GetTempPath()) .CreateSubdirectory(Guid.NewGuid().ToString()); var module = new Module(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, appDataDirectory, Version.Parse("1.0.0")); var resourceDir = module.ContentsDirectory.CreateSubdirectory("resource") .CreateSubdirectory("TestPluginProvisioned"); string pluginJson = TestUtilities.GetStringResource("Loader.plugin.json"); File.WriteAllText(Path.Combine(resourceDir.FullName, "plugin.json"), pluginJson); var directoryProvider = new ContentDirectoryProvider(appDataDirectory.FullName); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var sqliteProvider = new PluginConfigurationStore(optionsBuilder); var logProvider = new LogProvider(); var pluginManager = new PluginManager(logProvider, directoryProvider, sqliteProvider, fs); var provision = pluginManager.GetProvision <ProvisionedPluginImpl>(module); var plugin = new ProvisionedPluginImpl(provision); pluginManager.Register <ProvisionedPlugin>(plugin); Assert.NotEmpty(pluginManager.Get <ProvisionedPlugin>()); Assert.NotNull(pluginManager.Get <ProvisionedPlugin>("TestPluginProvisioned")); }
public void Compose(IModule module, Loader.IServiceRepository serviceContainer) { var physicalFs = serviceContainer.Get <IFileSystem>(); var contentDirectory = serviceContainer.Get <IContentDirectoryProvider>(); string sqlitePath = Path.Combine(contentDirectory.ApplicationData.FullName, "library.db"); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder .UseSqlite($"Data Source={sqlitePath}"); using (var context = new DatabaseContext(optionsBuilder.Options)) { var connection = context.Database.GetDbConnection(); connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = "PRAGMA journal_mode=WAL;"; command.ExecuteNonQuery(); } } // game library dependency tree var gameRecordLibrary = new GameRecordLibrary(optionsBuilder); var gameLibrary = new GameLibrary(gameRecordLibrary); var configStore = new ConfigurationCollectionStore(optionsBuilder); var fileLibrary = new FileRecordLibrary(optionsBuilder); var appDataPath = physicalFs.ConvertPathFromInternal(contentDirectory.ApplicationData.FullName); var gameFs = physicalFs.GetOrCreateSubFileSystem(appDataPath / "games"); // Add default extensions gameLibrary.AddExtension <IGameFileExtensionProvider, IGameFileExtension>(new GameFileExtensionProvider(fileLibrary, gameFs)); gameLibrary.AddExtension <IGameConfigurationExtensionProvider, IGameConfigurationExtension>(new GameConfigurationExtensionProvider(configStore)); // register game library. serviceContainer.Get <IServiceRegistrationProvider>() .RegisterService <IGameLibrary>(gameLibrary); var pluginLibrary = new PluginConfigurationStore(optionsBuilder); // plugin config store serviceContainer.Get <IServiceRegistrationProvider>() .RegisterService <IPluginConfigurationStore>(pluginLibrary); // controller elements var inputStore = new ControllerElementMappingsStore(optionsBuilder); serviceContainer.Get <IServiceRegistrationProvider>() .RegisterService <IControllerElementMappingsStore>(inputStore); }
public void ConfigurationStoreSet_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new PluginConfigurationStore(optionsBuilder); var configSection = store.Get <ExampleConfigurationSection>(); store.Set(configSection); }
public void PluginManagerRegister_Test() { var appDataDirectory = new DirectoryInfo(Path.GetTempPath()) .CreateSubdirectory(Guid.NewGuid().ToString()); var directoryProvider = new ContentDirectoryProvider(appDataDirectory.FullName); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var sqliteProvider = new PluginConfigurationStore(optionsBuilder); var logProvider = new LogProvider(); var pluginManager = new PluginManager(logProvider, directoryProvider, sqliteProvider); pluginManager.Register <StandalonePlugin>(new StandalonePluginImpl()); Assert.NotEmpty(pluginManager.Get <StandalonePlugin>()); Assert.NotNull(pluginManager.Get <StandalonePlugin>("TestPlugin")); }
public void ConfigurationStoreSetIndividualEnumerable_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new PluginConfigurationStore(optionsBuilder); var configSection = store.Get <ExampleConfigurationSection>(); store.Set(configSection); configSection.Configuration.ISOPath0 = "TestEqual"; configSection.Configuration.FullscreenResolution = FullscreenResolution.Resolution1152X648; configSection.Configuration.Fullscreen = false; store.Set(configSection); configSection.Configuration.FullscreenResolution = FullscreenResolution.Resolution1280X768; configSection.Configuration.Fullscreen = true; store.Set(new[]
public void ConfigurationStoreGet_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new PluginConfigurationStore(optionsBuilder); var configSection = store.Get <ExampleConfigurationSection>(); store.Set(configSection); var retrievedConfig = store.Get <ExampleConfigurationSection>(); Assert.NotNull(retrievedConfig); Assert.Equal(configSection.Configuration.ISOPath0, retrievedConfig.Configuration.ISOPath0); Assert.Equal(configSection.Configuration.FullscreenResolution, retrievedConfig.Configuration.FullscreenResolution); Assert.Equal(configSection.Configuration.Fullscreen, retrievedConfig.Configuration.Fullscreen); }