def create_permalink(args): from randovania.layout.permalink import Permalink from randovania.layout.generator_parameters import GeneratorParameters from randovania.interface_common.preset_manager import PresetManager game: RandovaniaGame = RandovaniaGame(args.game) preset_manager = PresetManager(None) presets = [] for preset_name in args.preset_name: versioned = preset_manager.included_preset_with(game, preset_name) if versioned is None: raise ValueError( "Unknown included preset '{}' for game {}. Valid options are: {}" .format(preset_name, game.long_name, [ preset.name for preset in preset_manager.included_presets.values() if preset.game == game ])) presets.append(versioned.get_preset()) seed = args.seed_number if seed is None: seed = random.randint(0, 2**31) return Permalink.from_parameters( GeneratorParameters( seed, spoiler=not args.race, presets=presets, ), )
def test_generate_new_seed(tab, preset_manager, mocker): # Setup mock_randint: MagicMock = mocker.patch("random.randint", return_value=12341234) tab.window.create_preset_tree = MagicMock() tab.window.create_preset_tree.current_preset_data = preset_manager.default_preset tab.generate_seed_from_permalink = MagicMock() spoiler = MagicMock(spec=bool) retries = MagicMock(spec=int) # Run tab._generate_new_seed(spoiler, retries) # Assert tab.generate_seed_from_permalink.assert_called_once_with( Permalink.from_parameters( GeneratorParameters( seed_number=12341234, spoiler=spoiler, presets=[preset_manager.default_preset.get_preset()], ) ), retries=retries ) mock_randint.assert_called_once_with(0, 2 ** 31)
def _generate_new_seed(self, spoiler: bool, retries: Optional[int] = None): preset = self._current_preset_data num_players = self.window.num_players_spin_box.value() self.generate_seed_from_permalink(Permalink.from_parameters(GeneratorParameters( seed_number=random.randint(0, 2 ** 31), spoiler=spoiler, presets=[preset.get_preset()] * num_players, )), retries=retries)