def test_load_engine_options__exlucde_defaults_false__modified_options__after_save__loads_modified_options(self): with tempfile.NamedTemporaryFile(mode='r+') as options_file: modified_options = {'string_none': 'test', 'spin': 100, 'combo': 'two', 'check_true': False} options_file.writelines(settings_loader.engine_options_file_lines(TEST_ENGINE_OPTIONS, modified_options)) options_file.seek(0) options = settings_loader.load_engine_options(TEST_ENGINE_OPTIONS, options_file, False) all_options = { name: modified_options[name] if name in modified_options else value for name, value in TEST_ENGINE_OPTIONS_DICT.items() } self.assertEqual(all_options, options)
def test_load_engine_options__modified_options__after_save__loads_modified_options(self): with tempfile.NamedTemporaryFile(mode='r+') as options_file: modified_options: engine.ConfigMapping = { 'string_none': 'test', 'spin': 100, 'combo': 'two', 'check_true': False } options_file.writelines(settings_loader.engine_options_file_lines(TEST_ENGINE_OPTIONS, modified_options)) options_file.seek(0) options = settings_loader.load_engine_options(TEST_ENGINE_OPTIONS, options_file) self.assertEqual(modified_options, options)
def test_engine_options_file_lines__default_options(self): expected_file_lines = [ 'string_none= # type=string\n', 'string_blank= # type=string\n', 'string_empty=<empty> # type=string\n', 'string_something=something # type=string\n', 'spin=0 # type=spin, min=-100, max=100\n', 'combo=one # type=combo, var=[\'one\', \'two\', \'three\']\n', 'check_true=True # type=check\n', 'check_false=False # type=check\n', ] self.assertEqual( expected_file_lines, settings_loader.engine_options_file_lines(TEST_ENGINE_OPTIONS, TEST_ENGINE_OPTIONS_DICT))
def test_engine_options_file_lines__longer_string__more_whitespace(self): expected_file_lines = [ 'string_none= # type=string\n', 'string_blank= # type=string\n', 'string_empty=<empty> # type=string\n', 'string_something=this is a longer string # type=string\n', 'spin=0 # type=spin, min=-100, max=100\n', 'combo=one # type=combo, var=[\'one\', \'two\', \'three\']\n', 'check_true=True # type=check\n', 'check_false=False # type=check\n', ] modified_options = dict(TEST_ENGINE_OPTIONS_DICT) modified_options['string_something'] = 'this is a longer string' self.assertEqual( expected_file_lines, settings_loader.engine_options_file_lines(TEST_ENGINE_OPTIONS, modified_options))
def load_all_engine_options(settings: Json) -> Dict[str, engine.ConfigMapping]: """Loads engine options.""" engine_options: Dict[str, engine.ConfigMapping] = {} for engine_setting in typing.cast(List[Json], settings['engines']): nickname = typing.cast(str, engine_setting['nickname']) path = typing.cast(str, engine_setting['path']) with engine.SimpleEngine.popen_uci(path) as uci_engine: default_options = [option for _, option in uci_engine.options.items()] engine_options_directory = settings['engine_options_directory'] options_file_path = f'{engine_options_directory}\\{nickname}.uci' ensure_file_exists(options_file_path) with open(options_file_path, 'r+') as options_file: simple_options = settings_loader.load_engine_options_simple(options_file) settings_loader.check_engine_options(default_options, simple_options) options_file.seek(0) options_with_defaults = settings_loader.load_engine_options(default_options, options_file, False) options_file.seek(0) if simple_options != options_with_defaults: options_file.writelines( settings_loader.engine_options_file_lines(default_options, options_with_defaults)) options_file.seek(0) engine_options[nickname] = settings_loader.load_engine_options(default_options, options_file) return engine_options