mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-04-07 19:28:13 -07:00
- The Shane and Sebastian Portrait filler items werent tagged properly. - The Beach Farm adds one secretsanity check, so it needs to be in the allsanity preset - The Allsanity preset is renamed to "Maxsanity" to encourage better defined terminology and Allsanity means something else - The "All Random" preset has been removed entirely. It has been the cause of too many beginner footguns over the years. People can still achieve the effect manually, but at least they'll have to try a little bit to ruin their own experience.
52 lines
2.1 KiB
Python
52 lines
2.1 KiB
Python
import unittest
|
|
from unittest.mock import Mock
|
|
|
|
from ..bases import skip_long_tests, SVTestBase
|
|
from ..options.presets import maxsanity_mods_7_x_x
|
|
from ..options.utils import fill_namespace_with_default
|
|
from ... import STARDEW_VALLEY
|
|
from ...options import FarmType, BundleRandomization, EntranceRandomization
|
|
|
|
|
|
@unittest.skipIf(skip_long_tests(), "Long tests disabled")
|
|
class TestUniversalTrackerGenerationIsStable(SVTestBase):
|
|
options = maxsanity_mods_7_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...
|
|
|
|
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([self.options])
|
|
args.outputpath = None
|
|
args.outputname = None
|
|
args.multi = 1
|
|
args.race = None
|
|
args.plando_options = self.multiworld.plando_options
|
|
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)
|