The Messenger: Make modules and tests PEP8 (#2276)
* The Messenger: PEP8 module and test names * fix dumb * whitespace
This commit is contained in:
		
							parent
							
								
									cc2247bfa0
								
							
						
					
					
						commit
						6f9484f375
					
				|  | @ -1,14 +1,14 @@ | ||||||
| import logging | import logging | ||||||
| from typing import Dict, Any, List, Optional | from typing import Any, Dict, List, Optional | ||||||
| 
 | 
 | ||||||
| from BaseClasses import Tutorial, ItemClassification, CollectionState, Item, MultiWorld | from BaseClasses import CollectionState, Item, ItemClassification, Tutorial | ||||||
| from worlds.AutoWorld import World, WebWorld | from worlds.AutoWorld import WebWorld, World | ||||||
| from .Constants import NOTES, PHOBEKINS, ALL_ITEMS, ALWAYS_LOCATIONS, BOSS_LOCATIONS, FILLER | from .constants import ALL_ITEMS, ALWAYS_LOCATIONS, BOSS_LOCATIONS, FILLER, NOTES, PHOBEKINS | ||||||
| from .Options import messenger_options, NotesNeeded, Goal, PowerSeals, Logic | from .options import Goal, Logic, NotesNeeded, PowerSeals, messenger_options | ||||||
| from .Regions import REGIONS, REGION_CONNECTIONS, SEALS, MEGA_SHARDS | from .regions import MEGA_SHARDS, REGIONS, REGION_CONNECTIONS, SEALS | ||||||
| from .Shop import SHOP_ITEMS, shuffle_shop_prices, FIGURINES | from .rules import MessengerHardRules, MessengerOOBRules, MessengerRules | ||||||
| from .SubClasses import MessengerRegion, MessengerItem | from .shop import FIGURINES, SHOP_ITEMS, shuffle_shop_prices | ||||||
| from . import Rules | from .subclasses import MessengerItem, MessengerRegion | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class MessengerWeb(WebWorld): | class MessengerWeb(WebWorld): | ||||||
|  | @ -68,15 +68,11 @@ class MessengerWorld(World): | ||||||
| 
 | 
 | ||||||
|     total_seals: int = 0 |     total_seals: int = 0 | ||||||
|     required_seals: int = 0 |     required_seals: int = 0 | ||||||
|     total_shards: int |     total_shards: int = 0 | ||||||
|     shop_prices: Dict[str, int] |     shop_prices: Dict[str, int] | ||||||
|     figurine_prices: Dict[str, int] |     figurine_prices: Dict[str, int] | ||||||
|     _filler_items: List[str] |     _filler_items: List[str] | ||||||
| 
 | 
 | ||||||
|     def __init__(self, multiworld: MultiWorld, player: int): |  | ||||||
|         super().__init__(multiworld, player) |  | ||||||
|         self.total_shards = 0 |  | ||||||
| 
 |  | ||||||
|     def generate_early(self) -> None: |     def generate_early(self) -> None: | ||||||
|         if self.multiworld.goal[self.player] == Goal.option_power_seal_hunt: |         if self.multiworld.goal[self.player] == Goal.option_power_seal_hunt: | ||||||
|             self.multiworld.shuffle_seals[self.player].value = PowerSeals.option_true |             self.multiworld.shuffle_seals[self.player].value = PowerSeals.option_true | ||||||
|  | @ -144,11 +140,11 @@ class MessengerWorld(World): | ||||||
|     def set_rules(self) -> None: |     def set_rules(self) -> None: | ||||||
|         logic = self.multiworld.logic_level[self.player] |         logic = self.multiworld.logic_level[self.player] | ||||||
|         if logic == Logic.option_normal: |         if logic == Logic.option_normal: | ||||||
|             Rules.MessengerRules(self).set_messenger_rules() |             MessengerRules(self).set_messenger_rules() | ||||||
|         elif logic == Logic.option_hard: |         elif logic == Logic.option_hard: | ||||||
|             Rules.MessengerHardRules(self).set_messenger_rules() |             MessengerHardRules(self).set_messenger_rules() | ||||||
|         else: |         else: | ||||||
|             Rules.MessengerOOBRules(self).set_messenger_rules() |             MessengerOOBRules(self).set_messenger_rules() | ||||||
| 
 | 
 | ||||||
|     def fill_slot_data(self) -> Dict[str, Any]: |     def fill_slot_data(self) -> Dict[str, Any]: | ||||||
|         shop_prices = {SHOP_ITEMS[item].internal_name: price for item, price in self.shop_prices.items()} |         shop_prices = {SHOP_ITEMS[item].internal_name: price for item, price in self.shop_prices.items()} | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| # items | # items | ||||||
| # listing individual groups first for easy lookup | # listing individual groups first for easy lookup | ||||||
| from .Shop import SHOP_ITEMS, FIGURINES | from .shop import SHOP_ITEMS, FIGURINES | ||||||
| 
 | 
 | ||||||
| NOTES = [ | NOTES = [ | ||||||
|     "Key of Hope", |     "Key of Hope", | ||||||
|  | @ -2,9 +2,9 @@ from typing import Dict, Callable, TYPE_CHECKING | ||||||
| 
 | 
 | ||||||
| from BaseClasses import CollectionState, MultiWorld | from BaseClasses import CollectionState, MultiWorld | ||||||
| from worlds.generic.Rules import set_rule, allow_self_locking_items, add_rule | from worlds.generic.Rules import set_rule, allow_self_locking_items, add_rule | ||||||
| from .Options import MessengerAccessibility, Goal | from .options import MessengerAccessibility, Goal | ||||||
| from .Constants import NOTES, PHOBEKINS | from .constants import NOTES, PHOBEKINS | ||||||
| from .SubClasses import MessengerShopLocation | from .subclasses import MessengerShopLocation | ||||||
| 
 | 
 | ||||||
| if TYPE_CHECKING: | if TYPE_CHECKING: | ||||||
|     from . import MessengerWorld |     from . import MessengerWorld | ||||||
|  | @ -119,7 +119,7 @@ class MessengerRules: | ||||||
|     def can_dboost(self, state: CollectionState) -> bool: |     def can_dboost(self, state: CollectionState) -> bool: | ||||||
|         return state.has_any({"Path of Resilience", "Meditation"}, self.player) and \ |         return state.has_any({"Path of Resilience", "Meditation"}, self.player) and \ | ||||||
|             state.has("Second Wind", self.player) |             state.has("Second Wind", self.player) | ||||||
|      | 
 | ||||||
|     def is_aerobatic(self, state: CollectionState) -> bool: |     def is_aerobatic(self, state: CollectionState) -> bool: | ||||||
|         return self.has_wingsuit(state) and state.has("Aerobatics Warrior", self.player) |         return self.has_wingsuit(state) and state.has("Aerobatics Warrior", self.player) | ||||||
| 
 | 
 | ||||||
|  | @ -2,10 +2,10 @@ from functools import cached_property | ||||||
| from typing import Optional, TYPE_CHECKING, cast | from typing import Optional, TYPE_CHECKING, cast | ||||||
| 
 | 
 | ||||||
| from BaseClasses import CollectionState, Item, ItemClassification, Location, Region | from BaseClasses import CollectionState, Item, ItemClassification, Location, Region | ||||||
| from .Constants import NOTES, PHOBEKINS, PROG_ITEMS, USEFUL_ITEMS | from .constants import NOTES, PHOBEKINS, PROG_ITEMS, USEFUL_ITEMS | ||||||
| from .Options import Goal | from .options import Goal | ||||||
| from .Regions import MEGA_SHARDS, REGIONS, SEALS | from .regions import MEGA_SHARDS, REGIONS, SEALS | ||||||
| from .Shop import FIGURINES, PROG_SHOP_ITEMS, SHOP_ITEMS, USEFUL_SHOP_ITEMS | from .shop import FIGURINES, PROG_SHOP_ITEMS, SHOP_ITEMS, USEFUL_SHOP_ITEMS | ||||||
| 
 | 
 | ||||||
| if TYPE_CHECKING: | if TYPE_CHECKING: | ||||||
|     from . import MessengerWorld |     from . import MessengerWorld | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| from . import MessengerTestBase | from . import MessengerTestBase | ||||||
| from ..Constants import NOTES, PHOBEKINS | from ..constants import NOTES, PHOBEKINS | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class AccessTest(MessengerTestBase): | class AccessTest(MessengerTestBase): | ||||||
|  | @ -7,7 +7,7 @@ class AccessTest(MessengerTestBase): | ||||||
|         "shuffle_shards": "true", |         "shuffle_shards": "true", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testTabi(self) -> None: |     def test_tabi(self) -> None: | ||||||
|         """locations that hard require the Lightfoot Tabi""" |         """locations that hard require the Lightfoot Tabi""" | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Searing Crags - Pyro", "Underworld - Key of Chaos", "Underworld Seal - Sharp and Windy Climb", |             "Searing Crags - Pyro", "Underworld - Key of Chaos", "Underworld Seal - Sharp and Windy Climb", | ||||||
|  | @ -19,7 +19,7 @@ class AccessTest(MessengerTestBase): | ||||||
|         items = [["Lightfoot Tabi"]] |         items = [["Lightfoot Tabi"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testDart(self) -> None: |     def test_dart(self) -> None: | ||||||
|         """locations that hard require the Rope Dart""" |         """locations that hard require the Rope Dart""" | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Ninja Village Seal - Tree House", "Autumn Hills - Key of Hope", "Howling Grotto Seal - Crushing Pits", |             "Ninja Village Seal - Tree House", "Autumn Hills - Key of Hope", "Howling Grotto Seal - Crushing Pits", | ||||||
|  | @ -31,7 +31,7 @@ class AccessTest(MessengerTestBase): | ||||||
|         items = [["Rope Dart"]] |         items = [["Rope Dart"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testWingsuit(self) -> None: |     def test_wingsuit(self) -> None: | ||||||
|         """locations that hard require the Wingsuit""" |         """locations that hard require the Wingsuit""" | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Ninja Village - Candle", "Ninja Village Seal - Tree House", "Autumn Hills - Climbing Claws", |             "Ninja Village - Candle", "Ninja Village Seal - Tree House", "Autumn Hills - Climbing Claws", | ||||||
|  | @ -57,7 +57,7 @@ class AccessTest(MessengerTestBase): | ||||||
|         items = [["Wingsuit"]] |         items = [["Wingsuit"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testVertical(self) -> None: |     def test_vertical(self) -> None: | ||||||
|         """locations that require either the Rope Dart or the Wingsuit""" |         """locations that require either the Rope Dart or the Wingsuit""" | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Ninja Village Seal - Tree House", "Howling Grotto Seal - Crushing Pits", |             "Ninja Village Seal - Tree House", "Howling Grotto Seal - Crushing Pits", | ||||||
|  | @ -92,7 +92,7 @@ class AccessTest(MessengerTestBase): | ||||||
|         items = [["Wingsuit", "Rope Dart"]] |         items = [["Wingsuit", "Rope Dart"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testAmulet(self) -> None: |     def test_amulet(self) -> None: | ||||||
|         """Locations that require Ruxxtin's Amulet""" |         """Locations that require Ruxxtin's Amulet""" | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Cloud Ruins - Acro", "Cloud Ruins Seal - Ghost Pit", "Cloud Ruins Seal - Toothbrush Alley", |             "Cloud Ruins - Acro", "Cloud Ruins Seal - Ghost Pit", "Cloud Ruins Seal - Toothbrush Alley", | ||||||
|  | @ -103,7 +103,7 @@ class AccessTest(MessengerTestBase): | ||||||
|         items = [["Ruxxtin's Amulet"]] |         items = [["Ruxxtin's Amulet"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testFirefly(self) -> None: |     def test_firefly(self) -> None: | ||||||
|         """Elemental Skylands and Corrupted Future require the Magic Firefly""" |         """Elemental Skylands and Corrupted Future require the Magic Firefly""" | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Elemental Skylands - Key of Symbiosis", "Elemental Skylands Seal - Air", "Elemental Skylands Seal - Fire", |             "Elemental Skylands - Key of Symbiosis", "Elemental Skylands Seal - Air", "Elemental Skylands Seal - Fire", | ||||||
|  | @ -113,7 +113,7 @@ class AccessTest(MessengerTestBase): | ||||||
|         items = [["Magic Firefly"]] |         items = [["Magic Firefly"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testCrests(self) -> None: |     def test_crests(self) -> None: | ||||||
|         """Test Key of Love nonsense""" |         """Test Key of Love nonsense""" | ||||||
|         locations = ["Sunken Shrine - Key of Love"] |         locations = ["Sunken Shrine - Key of Love"] | ||||||
|         items = [["Sun Crest", "Moon Crest"]] |         items = [["Sun Crest", "Moon Crest"]] | ||||||
|  | @ -124,19 +124,19 @@ class AccessTest(MessengerTestBase): | ||||||
|         self.collect_by_name("Sun Crest") |         self.collect_by_name("Sun Crest") | ||||||
|         self.assertEqual(self.can_reach_location("Sunken Shrine - Key of Love"), False) |         self.assertEqual(self.can_reach_location("Sunken Shrine - Key of Love"), False) | ||||||
| 
 | 
 | ||||||
|     def testThistle(self) -> None: |     def test_thistle(self) -> None: | ||||||
|         """I'm a chuckster!""" |         """I'm a chuckster!""" | ||||||
|         locations = ["Searing Crags - Key of Strength"] |         locations = ["Searing Crags - Key of Strength"] | ||||||
|         items = [["Power Thistle"]] |         items = [["Power Thistle"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testCrown(self) -> None: |     def test_crown(self) -> None: | ||||||
|         """Crocomire but not""" |         """Crocomire but not""" | ||||||
|         locations = ["Corrupted Future - Key of Courage"] |         locations = ["Corrupted Future - Key of Courage"] | ||||||
|         items = [["Demon King Crown"]] |         items = [["Demon King Crown"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testGoal(self) -> None: |     def test_goal(self) -> None: | ||||||
|         """Test some different states to verify goal requires the correct items""" |         """Test some different states to verify goal requires the correct items""" | ||||||
|         self.collect_all_but([*NOTES, "Rescue Phantom"]) |         self.collect_all_but([*NOTES, "Rescue Phantom"]) | ||||||
|         self.assertEqual(self.can_reach_location("Rescue Phantom"), False) |         self.assertEqual(self.can_reach_location("Rescue Phantom"), False) | ||||||
|  | @ -153,7 +153,7 @@ class ItemsAccessTest(MessengerTestBase): | ||||||
|         "accessibility": "items", |         "accessibility": "items", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testSelfLockingItems(self) -> None: |     def test_self_locking_items(self) -> None: | ||||||
|         """Force items that can be self locked to ensure it's valid placement.""" |         """Force items that can be self locked to ensure it's valid placement.""" | ||||||
|         location_lock_pairs = { |         location_lock_pairs = { | ||||||
|             "Searing Crags - Key of Strength": ["Power Thistle"], |             "Searing Crags - Key of Strength": ["Power Thistle"], | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| from . import MessengerTestBase | from . import MessengerTestBase | ||||||
| from ..SubClasses import MessengerLocation | from ..subclasses import MessengerLocation | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class LocationsTest(MessengerTestBase): | class LocationsTest(MessengerTestBase): | ||||||
|  | @ -10,7 +10,7 @@ class LocationsTest(MessengerTestBase): | ||||||
|     @property |     @property | ||||||
|     def run_default_tests(self) -> bool: |     def run_default_tests(self) -> bool: | ||||||
|         return False |         return False | ||||||
|      | 
 | ||||||
|     def testLocationsExist(self): |     def test_locations_exist(self) -> None: | ||||||
|         for location in self.multiworld.worlds[1].location_name_to_id: |         for location in self.multiworld.worlds[1].location_name_to_id: | ||||||
|             self.assertIsInstance(self.multiworld.get_location(location, self.player), MessengerLocation) |             self.assertIsInstance(self.multiworld.get_location(location, self.player), MessengerLocation) | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| from typing import Iterable, List |  | ||||||
| 
 |  | ||||||
| from BaseClasses import ItemClassification | from BaseClasses import ItemClassification | ||||||
| from . import MessengerTestBase | from . import MessengerTestBase | ||||||
| 
 | 
 | ||||||
|  | @ -10,7 +8,7 @@ class HardLogicTest(MessengerTestBase): | ||||||
|         "shuffle_shards": "true", |         "shuffle_shards": "true", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testVertical(self) -> None: |     def test_vertical(self) -> None: | ||||||
|         """Test the locations that still require wingsuit or rope dart.""" |         """Test the locations that still require wingsuit or rope dart.""" | ||||||
|         locations = [ |         locations = [ | ||||||
|             # tower of time |             # tower of time | ||||||
|  | @ -54,7 +52,7 @@ class HardLogicTest(MessengerTestBase): | ||||||
|         items = [["Wingsuit", "Rope Dart"]] |         items = [["Wingsuit", "Rope Dart"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testWindmill(self) -> None: |     def test_windmill(self) -> None: | ||||||
|         """Windmill Shuriken isn't progression on normal difficulty, so test it's marked correctly and required.""" |         """Windmill Shuriken isn't progression on normal difficulty, so test it's marked correctly and required.""" | ||||||
|         self.assertEqual(ItemClassification.progression, self.get_item_by_name("Windmill Shuriken").classification) |         self.assertEqual(ItemClassification.progression, self.get_item_by_name("Windmill Shuriken").classification) | ||||||
|         windmill_locs = [ |         windmill_locs = [ | ||||||
|  | @ -81,8 +79,8 @@ class HardLogicTest(MessengerTestBase): | ||||||
|         item = self.get_item_by_name("Rope Dart") |         item = self.get_item_by_name("Rope Dart") | ||||||
|         self.collect(item) |         self.collect(item) | ||||||
|         self.assertTrue(self.can_reach_location(special_loc)) |         self.assertTrue(self.can_reach_location(special_loc)) | ||||||
|      | 
 | ||||||
|     def testGlacial(self) -> None: |     def test_glacial(self) -> None: | ||||||
|         """Test Glacial Peak locations.""" |         """Test Glacial Peak locations.""" | ||||||
|         self.assertAccessDependency(["Glacial Peak Seal - Ice Climbers"], |         self.assertAccessDependency(["Glacial Peak Seal - Ice Climbers"], | ||||||
|                                     [["Second Wind", "Meditation"], ["Rope Dart"], ["Wingsuit"]], |                                     [["Second Wind", "Meditation"], ["Rope Dart"], ["Wingsuit"]], | ||||||
|  | @ -100,7 +98,7 @@ class NoLogicTest(MessengerTestBase): | ||||||
|         "logic_level": "oob", |         "logic_level": "oob", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testAccess(self) -> None: |     def test_access(self) -> None: | ||||||
|         """Test the locations with rules still require things.""" |         """Test the locations with rules still require things.""" | ||||||
|         all_locations = [ |         all_locations = [ | ||||||
|             "Bamboo Creek - Claustro", "Searing Crags - Key of Strength", "Elemental Skylands - Key of Symbiosis", |             "Bamboo Creek - Claustro", "Searing Crags - Key of Strength", "Elemental Skylands - Key of Symbiosis", | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| from . import MessengerTestBase | from . import MessengerTestBase | ||||||
| from ..Constants import NOTES | from ..constants import NOTES | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class TwoNoteGoalTest(MessengerTestBase): | class TwoNoteGoalTest(MessengerTestBase): | ||||||
|  | @ -7,7 +7,7 @@ class TwoNoteGoalTest(MessengerTestBase): | ||||||
|         "notes_needed": 2, |         "notes_needed": 2, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testPrecollectedNotes(self) -> None: |     def test_precollected_notes(self) -> None: | ||||||
|         self.assertEqual(self.multiworld.state.count_group("Notes", self.player), 4) |         self.assertEqual(self.multiworld.state.count_group("Notes", self.player), 4) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -16,15 +16,15 @@ class FourNoteGoalTest(MessengerTestBase): | ||||||
|         "notes_needed": 4, |         "notes_needed": 4, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testPrecollectedNotes(self) -> None: |     def test_precollected_notes(self) -> None: | ||||||
|         self.assertEqual(self.multiworld.state.count_group("Notes", self.player), 2) |         self.assertEqual(self.multiworld.state.count_group("Notes", self.player), 2) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class DefaultGoalTest(MessengerTestBase): | class DefaultGoalTest(MessengerTestBase): | ||||||
|     def testPrecollectedNotes(self) -> None: |     def test_precollected_notes(self) -> None: | ||||||
|         self.assertEqual(self.multiworld.state.count_group("Notes", self.player), 0) |         self.assertEqual(self.multiworld.state.count_group("Notes", self.player), 0) | ||||||
| 
 | 
 | ||||||
|     def testGoal(self) -> None: |     def test_goal(self) -> None: | ||||||
|         self.assertBeatable(False) |         self.assertBeatable(False) | ||||||
|         self.collect_by_name(NOTES) |         self.collect_by_name(NOTES) | ||||||
|         rope_dart = self.get_item_by_name("Rope Dart") |         rope_dart = self.get_item_by_name("Rope Dart") | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| from typing import Dict | from typing import Dict | ||||||
| 
 | 
 | ||||||
| from . import MessengerTestBase | from . import MessengerTestBase | ||||||
| from ..Shop import SHOP_ITEMS, FIGURINES | from ..shop import SHOP_ITEMS, FIGURINES | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ShopCostTest(MessengerTestBase): | class ShopCostTest(MessengerTestBase): | ||||||
|  | @ -10,13 +10,13 @@ class ShopCostTest(MessengerTestBase): | ||||||
|         "shuffle_shards": "true", |         "shuffle_shards": "true", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testShopRules(self) -> None: |     def test_shop_rules(self) -> None: | ||||||
|         for loc in SHOP_ITEMS: |         for loc in SHOP_ITEMS: | ||||||
|             loc = f"The Shop - {loc}" |             loc = f"The Shop - {loc}" | ||||||
|             with self.subTest("has cost", loc=loc): |             with self.subTest("has cost", loc=loc): | ||||||
|                 self.assertFalse(self.can_reach_location(loc)) |                 self.assertFalse(self.can_reach_location(loc)) | ||||||
| 
 | 
 | ||||||
|     def testShopPrices(self) -> None: |     def test_shop_prices(self) -> None: | ||||||
|         prices: Dict[str, int] = self.multiworld.worlds[self.player].shop_prices |         prices: Dict[str, int] = self.multiworld.worlds[self.player].shop_prices | ||||||
|         for loc, price in prices.items(): |         for loc, price in prices.items(): | ||||||
|             with self.subTest("prices", loc=loc): |             with self.subTest("prices", loc=loc): | ||||||
|  | @ -24,7 +24,7 @@ class ShopCostTest(MessengerTestBase): | ||||||
|                 self.assertTrue(loc in SHOP_ITEMS) |                 self.assertTrue(loc in SHOP_ITEMS) | ||||||
|         self.assertEqual(len(prices), len(SHOP_ITEMS)) |         self.assertEqual(len(prices), len(SHOP_ITEMS)) | ||||||
| 
 | 
 | ||||||
|     def testDBoost(self) -> None: |     def test_dboost(self) -> None: | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Riviere Turquoise Seal - Bounces and Balls", |             "Riviere Turquoise Seal - Bounces and Balls", | ||||||
|             "Forlorn Temple - Demon King", "Forlorn Temple Seal - Rocket Maze", "Forlorn Temple Seal - Rocket Sunset", |             "Forlorn Temple - Demon King", "Forlorn Temple Seal - Rocket Maze", "Forlorn Temple Seal - Rocket Sunset", | ||||||
|  | @ -33,10 +33,10 @@ class ShopCostTest(MessengerTestBase): | ||||||
|         items = [["Path of Resilience", "Meditation", "Second Wind"]] |         items = [["Path of Resilience", "Meditation", "Second Wind"]] | ||||||
|         self.assertAccessDependency(locations, items) |         self.assertAccessDependency(locations, items) | ||||||
| 
 | 
 | ||||||
|     def testCurrents(self) -> None: |     def test_currents(self) -> None: | ||||||
|         self.assertAccessDependency(["Elemental Skylands Seal - Water"], [["Currents Master"]]) |         self.assertAccessDependency(["Elemental Skylands Seal - Water"], [["Currents Master"]]) | ||||||
| 
 | 
 | ||||||
|     def testStrike(self) -> None: |     def test_strike(self) -> None: | ||||||
|         locations = [ |         locations = [ | ||||||
|             "Glacial Peak Seal - Projectile Spike Pit", "Elemental Skylands Seal - Fire", |             "Glacial Peak Seal - Projectile Spike Pit", "Elemental Skylands Seal - Fire", | ||||||
|         ] |         ] | ||||||
|  | @ -50,22 +50,22 @@ class ShopCostMinTest(ShopCostTest): | ||||||
|         "shuffle_seals": "false", |         "shuffle_seals": "false", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testShopRules(self) -> None: |     def test_shop_rules(self) -> None: | ||||||
|         if self.multiworld.worlds[self.player].total_shards: |         if self.multiworld.worlds[self.player].total_shards: | ||||||
|             super().testShopRules() |             super().test_shop_rules() | ||||||
|         else: |         else: | ||||||
|             for loc in SHOP_ITEMS: |             for loc in SHOP_ITEMS: | ||||||
|                 loc = f"The Shop - {loc}" |                 loc = f"The Shop - {loc}" | ||||||
|                 with self.subTest("has cost", loc=loc): |                 with self.subTest("has cost", loc=loc): | ||||||
|                     self.assertTrue(self.can_reach_location(loc)) |                     self.assertTrue(self.can_reach_location(loc)) | ||||||
| 
 | 
 | ||||||
|     def testDBoost(self) -> None: |     def test_dboost(self) -> None: | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
|     def testCurrents(self) -> None: |     def test_currents(self) -> None: | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
|     def testStrike(self) -> None: |     def test_strike(self) -> None: | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -79,7 +79,7 @@ class PlandoTest(MessengerTestBase): | ||||||
|         }, |         }, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testCosts(self) -> None: |     def test_costs(self) -> None: | ||||||
|         for loc in SHOP_ITEMS: |         for loc in SHOP_ITEMS: | ||||||
|             loc = f"The Shop - {loc}" |             loc = f"The Shop - {loc}" | ||||||
|             with self.subTest("has cost", loc=loc): |             with self.subTest("has cost", loc=loc): | ||||||
|  | @ -8,11 +8,11 @@ class AllSealsRequired(MessengerTestBase): | ||||||
|         "goal": "power_seal_hunt", |         "goal": "power_seal_hunt", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testSealsShuffled(self) -> None: |     def test_seals_shuffled(self) -> None: | ||||||
|         """Shuffle seals should be forced on when shop chest is the goal so test it.""" |         """Shuffle seals should be forced on when shop chest is the goal so test it.""" | ||||||
|         self.assertTrue(self.multiworld.shuffle_seals[self.player]) |         self.assertTrue(self.multiworld.shuffle_seals[self.player]) | ||||||
| 
 | 
 | ||||||
|     def testChestAccess(self) -> None: |     def test_chest_access(self) -> None: | ||||||
|         """Defaults to a total of 45 power seals in the pool and required.""" |         """Defaults to a total of 45 power seals in the pool and required.""" | ||||||
|         with self.subTest("Access Dependency"): |         with self.subTest("Access Dependency"): | ||||||
|             self.assertEqual(len([seal for seal in self.multiworld.itempool if seal.name == "Power Seal"]), |             self.assertEqual(len([seal for seal in self.multiworld.itempool if seal.name == "Power Seal"]), | ||||||
|  | @ -38,7 +38,7 @@ class HalfSealsRequired(MessengerTestBase): | ||||||
|         "percent_seals_required": 50, |         "percent_seals_required": 50, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testSealsAmount(self) -> None: |     def test_seals_amount(self) -> None: | ||||||
|         """Should have 45 power seals in the item pool and half that required""" |         """Should have 45 power seals in the item pool and half that required""" | ||||||
|         self.assertEqual(self.multiworld.total_seals[self.player], 45) |         self.assertEqual(self.multiworld.total_seals[self.player], 45) | ||||||
|         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 45) |         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 45) | ||||||
|  | @ -57,7 +57,7 @@ class ThirtyThirtySeals(MessengerTestBase): | ||||||
|         "percent_seals_required": 34, |         "percent_seals_required": 34, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testSealsAmount(self) -> None: |     def test_seals_amount(self) -> None: | ||||||
|         """Should have 30 power seals in the pool and 33 percent of that required.""" |         """Should have 30 power seals in the pool and 33 percent of that required.""" | ||||||
|         self.assertEqual(self.multiworld.total_seals[self.player], 30) |         self.assertEqual(self.multiworld.total_seals[self.player], 30) | ||||||
|         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 30) |         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 30) | ||||||
|  | @ -75,7 +75,7 @@ class MaxSealsNoShards(MessengerTestBase): | ||||||
|         "total_seals": 85, |         "total_seals": 85, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testSealsAmount(self) -> None: |     def test_seals_amount(self) -> None: | ||||||
|         """Should set total seals to 70 since shards aren't shuffled.""" |         """Should set total seals to 70 since shards aren't shuffled.""" | ||||||
|         self.assertEqual(self.multiworld.total_seals[self.player], 85) |         self.assertEqual(self.multiworld.total_seals[self.player], 85) | ||||||
|         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 70) |         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 70) | ||||||
|  | @ -88,7 +88,7 @@ class MaxSealsWithShards(MessengerTestBase): | ||||||
|         "shuffle_shards": "true", |         "shuffle_shards": "true", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def testSealsAmount(self) -> None: |     def test_seals_amount(self) -> None: | ||||||
|         """Should have 85 seals in the pool with all required and be a valid seed.""" |         """Should have 85 seals in the pool with all required and be a valid seed.""" | ||||||
|         self.assertEqual(self.multiworld.total_seals[self.player], 85) |         self.assertEqual(self.multiworld.total_seals[self.player], 85) | ||||||
|         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 85) |         self.assertEqual(self.multiworld.worlds[self.player].total_seals, 85) | ||||||
		Loading…
	
		Reference in New Issue