DLC Quest: Fix code structure, typos, poor code quality (#2066)

"Added a bunch of tests to make sure I don't break anything during refactoring
Huge cleanup in the Regions file, extract methods, remove code duplicate, fix typos, fix variable naming conventions, etc.
Small cleanup in other places, minor stuff just what was needed for Regions"
This commit is contained in:
agilbert1412
2023-10-18 15:53:12 -04:00
committed by GitHub
parent 11ebc523a9
commit 5ca1ababfd
7 changed files with 455 additions and 277 deletions

View File

View File

@@ -0,0 +1,42 @@
from typing import List
from BaseClasses import MultiWorld, ItemClassification
from .. import DLCQuestTestBase
from ... import Options
def get_all_item_names(multiworld: MultiWorld) -> List[str]:
return [item.name for item in multiworld.itempool]
def get_all_location_names(multiworld: MultiWorld) -> List[str]:
return [location.name for location in multiworld.get_locations() if not location.event]
def assert_victory_exists(tester: DLCQuestTestBase, multiworld: MultiWorld):
campaign = multiworld.campaign[1]
all_items = [item.name for item in multiworld.get_items()]
if campaign == Options.Campaign.option_basic or campaign == Options.Campaign.option_both:
tester.assertIn("Victory Basic", all_items)
if campaign == Options.Campaign.option_live_freemium_or_die or campaign == Options.Campaign.option_both:
tester.assertIn("Victory Freemium", all_items)
def collect_all_then_assert_can_win(tester: DLCQuestTestBase, multiworld: MultiWorld):
for item in multiworld.get_items():
multiworld.state.collect(item)
campaign = multiworld.campaign[1]
if campaign == Options.Campaign.option_basic or campaign == Options.Campaign.option_both:
tester.assertTrue(multiworld.find_item("Victory Basic", 1).can_reach(multiworld.state))
if campaign == Options.Campaign.option_live_freemium_or_die or campaign == Options.Campaign.option_both:
tester.assertTrue(multiworld.find_item("Victory Freemium", 1).can_reach(multiworld.state))
def assert_can_win(tester: DLCQuestTestBase, multiworld: MultiWorld):
assert_victory_exists(tester, multiworld)
collect_all_then_assert_can_win(tester, multiworld)
def assert_same_number_items_locations(tester: DLCQuestTestBase, multiworld: MultiWorld):
non_event_locations = [location for location in multiworld.get_locations() if not location.event]
tester.assertEqual(len(multiworld.itempool), len(non_event_locations))