"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"
42 lines
1.9 KiB
Python
42 lines
1.9 KiB
Python
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)) |