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

@@ -0,0 +1,130 @@
from . import DLCQuestTestBase
from .. import Options
sword = "Sword"
gun = "Gun"
wooden_sword = "Wooden Sword"
pickaxe = "Pickaxe"
humble_bindle = "Humble Indie Bindle"
box_supplies = "Box of Various Supplies"
items = [sword, gun, wooden_sword, pickaxe, humble_bindle, box_supplies]
important_pack = "Incredibly Important Pack"
class TestItemShuffle(DLCQuestTestBase):
options = {Options.ItemShuffle.internal_name: Options.ItemShuffle.option_shuffled,
Options.Campaign.internal_name: Options.Campaign.option_both}
def test_items_in_pool(self):
item_names = {item.name for item in self.multiworld.get_items()}
for item in items:
with self.subTest(f"{item}"):
self.assertIn(item, item_names)
def test_item_locations_in_pool(self):
location_names = {location.name for location in self.multiworld.get_locations()}
for item_location in items:
with self.subTest(f"{item_location}"):
self.assertIn(item_location, location_names)
def test_sword_location_has_correct_rules(self):
self.assertFalse(self.can_reach_location(sword))
movement_pack = self.multiworld.create_item("Movement Pack", self.player)
self.collect(movement_pack)
self.assertFalse(self.can_reach_location(sword))
time_pack = self.multiworld.create_item("Time is Money Pack", self.player)
self.collect(time_pack)
self.assertTrue(self.can_reach_location(sword))
def test_gun_location_has_correct_rules(self):
self.assertFalse(self.can_reach_location(gun))
movement_pack = self.multiworld.create_item("Movement Pack", self.player)
self.collect(movement_pack)
self.assertFalse(self.can_reach_location(gun))
sword_item = self.multiworld.create_item(sword, self.player)
self.collect(sword_item)
self.assertFalse(self.can_reach_location(gun))
gun_pack = self.multiworld.create_item("Gun Pack", self.player)
self.collect(gun_pack)
self.assertTrue(self.can_reach_location(gun))
def test_wooden_sword_location_has_correct_rules(self):
self.assertFalse(self.can_reach_location(wooden_sword))
important_pack_item = self.multiworld.create_item(important_pack, self.player)
self.collect(important_pack_item)
self.assertTrue(self.can_reach_location(wooden_sword))
def test_bindle_location_has_correct_rules(self):
self.assertFalse(self.can_reach_location(humble_bindle))
wooden_sword_item = self.multiworld.create_item(wooden_sword, self.player)
self.collect(wooden_sword_item)
self.assertFalse(self.can_reach_location(humble_bindle))
plants_pack = self.multiworld.create_item("Harmless Plants Pack", self.player)
self.collect(plants_pack)
self.assertFalse(self.can_reach_location(humble_bindle))
wall_jump_pack = self.multiworld.create_item("Wall Jump Pack", self.player)
self.collect(wall_jump_pack)
self.assertFalse(self.can_reach_location(humble_bindle))
name_change_pack = self.multiworld.create_item("Name Change Pack", self.player)
self.collect(name_change_pack)
self.assertFalse(self.can_reach_location(humble_bindle))
cut_content_pack = self.multiworld.create_item("Cut Content Pack", self.player)
self.collect(cut_content_pack)
self.assertFalse(self.can_reach_location(humble_bindle))
box_supplies_item = self.multiworld.create_item(box_supplies, self.player)
self.collect(box_supplies_item)
self.assertTrue(self.can_reach_location(humble_bindle))
def test_box_supplies_location_has_correct_rules(self):
self.assertFalse(self.can_reach_location(box_supplies))
wooden_sword_item = self.multiworld.create_item(wooden_sword, self.player)
self.collect(wooden_sword_item)
self.assertFalse(self.can_reach_location(box_supplies))
plants_pack = self.multiworld.create_item("Harmless Plants Pack", self.player)
self.collect(plants_pack)
self.assertFalse(self.can_reach_location(box_supplies))
wall_jump_pack = self.multiworld.create_item("Wall Jump Pack", self.player)
self.collect(wall_jump_pack)
self.assertFalse(self.can_reach_location(box_supplies))
name_change_pack = self.multiworld.create_item("Name Change Pack", self.player)
self.collect(name_change_pack)
self.assertFalse(self.can_reach_location(box_supplies))
cut_content_pack = self.multiworld.create_item("Cut Content Pack", self.player)
self.collect(cut_content_pack)
self.assertTrue(self.can_reach_location(box_supplies))
def test_pickaxe_location_has_correct_rules(self):
self.assertFalse(self.can_reach_location(pickaxe))
wooden_sword_item = self.multiworld.create_item(wooden_sword, self.player)
self.collect(wooden_sword_item)
self.assertFalse(self.can_reach_location(pickaxe))
plants_pack = self.multiworld.create_item("Harmless Plants Pack", self.player)
self.collect(plants_pack)
self.assertFalse(self.can_reach_location(pickaxe))
wall_jump_pack = self.multiworld.create_item("Wall Jump Pack", self.player)
self.collect(wall_jump_pack)
self.assertFalse(self.can_reach_location(pickaxe))
name_change_pack = self.multiworld.create_item("Name Change Pack", self.player)
self.collect(name_change_pack)
self.assertFalse(self.can_reach_location(pickaxe))
bindle_item = self.multiworld.create_item("Humble Indie Bindle", self.player)
self.collect(bindle_item)
self.assertTrue(self.can_reach_location(pickaxe))
class TestNoItemShuffle(DLCQuestTestBase):
options = {Options.ItemShuffle.internal_name: Options.ItemShuffle.option_disabled,
Options.Campaign.internal_name: Options.Campaign.option_both}
def test_items_not_in_pool(self):
item_names = {item.name for item in self.multiworld.get_items()}
for item in items:
with self.subTest(f"{item}"):
self.assertNotIn(item, item_names)
def test_item_locations_not_in_pool(self):
location_names = {location.name for location in self.multiworld.get_locations()}
for item_location in items:
with self.subTest(f"{item_location}"):
self.assertNotIn(item_location, location_names)