Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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"));
        }
Esempio n. 6
0
        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[]
Esempio n. 7
0
        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);
        }