public async Task ConfigurationStoreGetAsync_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new ConfigurationCollectionStore(optionsBuilder); var configCollection = await store.CreateConfigurationAsync <ExampleConfigurationCollection>("Test"); var resGuid = Guid.NewGuid(); configCollection.Configuration.ExampleConfiguration.ISOPath0 = "TestEqual"; configCollection.Configuration.ExampleConfiguration.FullscreenResolution = FullscreenResolution.Resolution1152X648; configCollection.Configuration.ExampleConfiguration.Fullscreen = false; configCollection.Configuration.ExampleConfiguration.SomeResource = resGuid; await store.UpdateConfigurationAsync(configCollection); var retrievedConfig = await store.GetConfigurationAsync <ExampleConfigurationCollection>(configCollection.ValueCollection.Guid); Assert.NotNull(retrievedConfig); Assert.Equal(configCollection.Configuration.ExampleConfiguration.ISOPath0, retrievedConfig.Configuration.ExampleConfiguration.ISOPath0); Assert.Equal(configCollection.Configuration.ExampleConfiguration.FullscreenResolution, retrievedConfig.Configuration.ExampleConfiguration.FullscreenResolution); Assert.Equal(configCollection.Configuration.ExampleConfiguration.Fullscreen, retrievedConfig.Configuration.ExampleConfiguration.Fullscreen); Assert.Equal(resGuid, configCollection.Configuration.ExampleConfiguration.SomeResource); }
public void ConfigurationStoreSetIndividual_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new ConfigurationCollectionStore(optionsBuilder); var configCollection = store.CreateConfiguration <ExampleConfigurationCollection>("Test"); configCollection.Configuration.ExampleConfiguration.ISOPath0 = "TestEqual"; configCollection.Configuration.ExampleConfiguration.FullscreenResolution = FullscreenResolution.Resolution1152X648; configCollection.Configuration.ExampleConfiguration.Fullscreen = false; store.UpdateConfiguration(configCollection); configCollection.Configuration.ExampleConfiguration.FullscreenResolution = FullscreenResolution.Resolution1280X768; store.UpdateValue(configCollection.Configuration.ExampleConfiguration.Values["FullscreenResolution"]); var retrievedConfig = store.GetConfiguration <ExampleConfigurationCollection>(configCollection.ValueCollection.Guid); Assert.NotNull(retrievedConfig); Assert.Equal(configCollection.Configuration.ExampleConfiguration.ISOPath0, retrievedConfig.Configuration.ExampleConfiguration.ISOPath0); Assert.Equal(configCollection.Configuration.ExampleConfiguration.FullscreenResolution, retrievedConfig.Configuration.ExampleConfiguration.FullscreenResolution); Assert.Equal(configCollection.Configuration.ExampleConfiguration.Fullscreen, retrievedConfig.Configuration.ExampleConfiguration.Fullscreen); }
public async Task ConfigurationStoreSetAsync_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new ConfigurationCollectionStore(optionsBuilder); await store.CreateConfigurationAsync <ExampleConfigurationCollection>("Test"); }
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 ConfigurationStore_CreateAndRetrieve_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var configStore = new ConfigurationCollectionStore(optionsBuilder); var gameGuid = Guid.NewGuid(); var config = configStore .CreateConfiguration <ExampleConfigurationCollection>("TestConfiguration"); var retrieved = configStore.GetConfiguration <ExampleConfigurationCollection> (config.ValueCollection.Guid); }
public void ConfigurationStore_Delete_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var configStore = new ConfigurationCollectionStore(optionsBuilder); var config = configStore .CreateConfiguration <ExampleConfigurationCollection>("TestConfiguration"); // trigger an ensure of the ExampleConfiguration var getConfig = configStore.GetConfiguration <ExampleConfigurationCollection>(config.ValueCollection.Guid); Assert.NotNull(getConfig); configStore.DeleteConfiguration(config.ValueCollection.Guid); Assert.Null(configStore.GetConfiguration <ExampleConfigurationCollection>(config.ValueCollection.Guid)); }
public void ConfigurationStore_CreateAndRetrieveEnsure_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var configStore = new ConfigurationCollectionStore(optionsBuilder); var gameGuid = Guid.NewGuid(); var config = configStore .CreateConfiguration <ExampleConfigurationCollection>("TestConfiguration"); // trigger an ensure of the ExampleConfiguration var res = config.Configuration.ExampleConfiguration.FullscreenResolution; configStore.UpdateConfiguration(config); var retrieved = configStore.GetConfiguration <ExampleConfigurationCollection> (config.ValueCollection.Guid); }
public async Task ConfigurationStoreMultipleProfileIndividualAsync_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new ConfigurationCollectionStore(optionsBuilder); var configCollection = await store.CreateConfigurationAsync <ExampleConfigurationCollection>("Test"); configCollection.Configuration.ExampleConfiguration.ISOPath0 = "TestEqual"; configCollection.Configuration.ExampleConfiguration.FullscreenResolution = FullscreenResolution.Resolution1152X648; configCollection.Configuration.ExampleConfiguration.Fullscreen = false; var otherConfigCollection = store.CreateConfiguration <ExampleConfigurationCollection>("Test"); otherConfigCollection.Configuration.ExampleConfiguration.ISOPath0 = "TestNotEqual"; otherConfigCollection.Configuration.ExampleConfiguration.FullscreenResolution = FullscreenResolution.Resolution1280X1024; otherConfigCollection.Configuration.ExampleConfiguration.Fullscreen = true; await store.UpdateConfigurationAsync(configCollection); await store.UpdateConfigurationAsync(otherConfigCollection); var retrievedConfig = await store.GetConfigurationAsync <ExampleConfigurationCollection>(configCollection.ValueCollection.Guid); var newRetrievedConfig = await store.GetConfigurationAsync <ExampleConfigurationCollection>(otherConfigCollection.ValueCollection.Guid); Assert.NotNull(retrievedConfig); Assert.Equal(configCollection.Configuration.ExampleConfiguration.ISOPath0, retrievedConfig.Configuration.ExampleConfiguration.ISOPath0); Assert.Equal(configCollection.Configuration.ExampleConfiguration.FullscreenResolution, retrievedConfig.Configuration.ExampleConfiguration.FullscreenResolution); Assert.Equal(configCollection.Configuration.ExampleConfiguration.Fullscreen, retrievedConfig.Configuration.ExampleConfiguration.Fullscreen); Assert.NotEqual(retrievedConfig.Configuration.ExampleConfiguration.FullscreenResolution, newRetrievedConfig.Configuration.ExampleConfiguration.FullscreenResolution); Assert.NotEqual(retrievedConfig.Configuration.ExampleConfiguration.ISOPath0, newRetrievedConfig.Configuration.ExampleConfiguration.ISOPath0); Assert.NotEqual(retrievedConfig.Configuration.ExampleConfiguration.Fullscreen, newRetrievedConfig.Configuration.ExampleConfiguration.Fullscreen); }
public void ConfigurationStore_GetValue_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var configStore = new ConfigurationCollectionStore(optionsBuilder); var config = configStore .CreateConfiguration <ExampleConfigurationCollection>("TestConfiguration"); var setValue = config.ValueCollection[config.Configuration.ExampleConfiguration.Descriptor, nameof(config.Configuration.ExampleConfiguration.FullscreenResolution)]; config.Configuration.ExampleConfiguration.FullscreenResolution = Configuration.FullscreenResolution.Resolution3840X2160; configStore.UpdateConfiguration(config); var getValue = configStore.GetValue(setValue.Guid); Assert.Equal(setValue.Value, (Configuration.FullscreenResolution)getValue.Value); }
public void ConfigurationStoreGetDefault_Test() { var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var store = new ConfigurationCollectionStore(optionsBuilder); var configCollection = store.CreateConfiguration <ExampleConfigurationCollection>("Test"); var retrievedConfig = store.GetConfiguration <ExampleConfigurationCollection>(configCollection.ValueCollection.Guid); Assert.NotNull(retrievedConfig); Assert.Equal(configCollection.Configuration.ExampleConfiguration.ISOPath0, retrievedConfig.Configuration.ExampleConfiguration.ISOPath0); Assert.Equal(configCollection.Configuration.ExampleConfiguration.FullscreenResolution, retrievedConfig.Configuration.ExampleConfiguration.FullscreenResolution); Assert.Equal(configCollection.Configuration.ExampleConfiguration.Fullscreen, retrievedConfig.Configuration.ExampleConfiguration.Fullscreen); }
public async Task GameLibraryIntegrationConfigAsync_Test() { var path = new DirectoryInfo(Path.GetTempPath()) .CreateSubdirectory(Path.GetFileNameWithoutExtension(Path.GetTempFileName())); var fs = new PhysicalFileSystem(); var gfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(path.FullName)); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var glib = new GameRecordLibrary(optionsBuilder); var ccs = new ConfigurationCollectionStore(optionsBuilder); var gl = new GameLibrary(glib); gl.AddExtension <IGameConfigurationExtensionProvider, IGameConfigurationExtension> (new GameConfigurationExtensionProvider(ccs)); var game = await gl.CreateGameAsync("NINTENDO_NES"); var profile = await game.WithConfigurations() .CreateNewProfileAsync <ExampleConfigurationCollection>("TestConfiguration", "test"); var profileGuid = profile.CollectionGuid; Assert.NotNull(await game.WithConfigurations() .GetProfileAsync <ExampleConfigurationCollection>("TestConfiguration", profileGuid)); Assert.NotEmpty(game.WithConfigurations().GetProfileNames()); profile.Configuration.ExampleConfiguration.FullscreenResolution = Configuration.FullscreenResolution.Resolution1600X1050; await gl.WithConfigurationLibrary().UpdateProfileAsync(profile); var newProfile = await game.WithConfigurations() .GetProfileAsync <ExampleConfigurationCollection>("TestConfiguration", profileGuid); Assert.Equal(Configuration.FullscreenResolution.Resolution1600X1050, newProfile.Configuration.ExampleConfiguration.FullscreenResolution); await game.WithConfigurations().DeleteProfileAsync("TestConfiguration", profileGuid); Assert.Empty(game.WithConfigurations().GetProfileNames()); }
public async Task GameLibraryUnknownExtensionAsync_Test() { var path = new DirectoryInfo(Path.GetTempPath()) .CreateSubdirectory(Path.GetFileNameWithoutExtension(Path.GetTempFileName())); var fs = new PhysicalFileSystem(); var gfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(path.FullName)); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var glib = new GameRecordLibrary(optionsBuilder); var ccs = new ConfigurationCollectionStore(optionsBuilder); var gl = new GameLibrary(glib); Assert.Throws <KeyNotFoundException>(() => gl.GetExtension <IGameConfigurationExtensionProvider>()); var game = await gl.CreateGameAsync("NINTENDO_NES"); Assert.Throws <KeyNotFoundException>(() => game.GetExtension <IGameConfigurationExtension>()); }
public GameConfigurationExtensionProvider(ConfigurationCollectionStore collectionStore) { this.CollectionStore = collectionStore; }
public GameConfigurationExtension(IGameRecord gameRecord, ConfigurationCollectionStore collectionStore) { GameRecord = gameRecord; this.ConfigurationStore = collectionStore; }