54 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| from unittest.mock import Mock
 | |
| 
 | |
| from .. import SVTestBase, fill_namespace_with_default
 | |
| from ..options.presets import allsanity_mods_6_x_x
 | |
| from ... import STARDEW_VALLEY, FarmType, BundleRandomization, EntranceRandomization
 | |
| 
 | |
| 
 | |
| class TestUniversalTrackerGenerationIsStable(SVTestBase):
 | |
|     options = allsanity_mods_6_x_x()
 | |
|     options.update({
 | |
|         EntranceRandomization.internal_name: EntranceRandomization.option_buildings,
 | |
|         BundleRandomization.internal_name: BundleRandomization.option_shuffled,
 | |
|         FarmType.internal_name: FarmType.option_standard,  # Need to choose one  otherwise it's random
 | |
|     })
 | |
| 
 | |
|     def test_all_locations_and_items_are_the_same_between_two_generations(self):
 | |
|         # This might open a kivy window temporarily, but it's the only way to test this...
 | |
|         if self.skip_long_tests:
 | |
|             raise unittest.SkipTest("Long tests disabled")
 | |
| 
 | |
|         try:
 | |
|             # This test only run if UT is present, so no risk of running in the CI.
 | |
|             from worlds.tracker.TrackerClient import TrackerGameContext  # noqa
 | |
|         except ImportError:
 | |
|             raise unittest.SkipTest("UT not loaded, skipping test")
 | |
| 
 | |
|         slot_data = self.world.fill_slot_data()
 | |
|         ut_data = self.world.interpret_slot_data(slot_data)
 | |
| 
 | |
|         fake_context = Mock()
 | |
|         fake_context.re_gen_passthrough = {STARDEW_VALLEY: ut_data}
 | |
|         args = fill_namespace_with_default({0: self.options})
 | |
|         args.outputpath = None
 | |
|         args.outputname = None
 | |
|         args.multi = 1
 | |
|         args.race = None
 | |
|         args.plando_options = self.multiworld.plando_options
 | |
|         args.plando_items = self.multiworld.plando_items
 | |
|         args.plando_texts = self.multiworld.plando_texts
 | |
|         args.plando_connections = self.multiworld.plando_connections
 | |
|         args.game = self.multiworld.game
 | |
|         args.name = self.multiworld.player_name
 | |
|         args.sprite = {}
 | |
|         args.sprite_pool = {}
 | |
|         args.skip_output = True
 | |
| 
 | |
|         generated_multi_world = TrackerGameContext.TMain(fake_context, args, self.multiworld.seed)
 | |
|         generated_slot_data = generated_multi_world.worlds[1].fill_slot_data()
 | |
| 
 | |
|         # Just checking slot data should prove that UT generates the same result as AP generation.
 | |
|         self.maxDiff = None
 | |
|         self.assertEqual(slot_data, generated_slot_data)
 | 
