Archipelago/worlds/witness/test/test_weird_traversals.py

67 lines
3.0 KiB
Python

from ..test import WitnessTestBase
class TestWeirdTraversalRequirements(WitnessTestBase):
options = {
"shuffle_vault_boxes": True,
"shuffle_symbols": False,
"shuffle_EPs": "individual",
"EP_difficulty": "tedious",
"shuffle_doors": "doors",
"door_groupings": "off",
"puzzle_randomization": "sigma_expert",
}
def test_weird_traversal_requirements(self) -> None:
"""
Test that Tunnels Theater Flowers EP and Expert PP2 consider all valid paths logically.
"""
with self.subTest("Tunnels Theater Flowers EP"):
self.assertAccessDependency(
["Tunnels Theater Flowers EP"],
[
["Theater Exit Left (Door)", "Windmill Entry (Door)", "Tunnels Theater Shortcut (Door)"],
["Theater Exit Right (Door)", "Windmill Entry (Door)", "Tunnels Theater Shortcut (Door)"],
["Theater Exit Left (Door)", "Tunnels Town Shortcut (Door)"],
["Theater Exit Right (Door)", "Tunnels Town Shortcut (Door)"],
["Theater Entry (Door)", "Tunnels Theater Shortcut (Door)"],
["Theater Entry (Door)", "Windmill Entry (Door)", "Tunnels Town Shortcut (Door)"],
],
only_check_listed=True,
)
with self.subTest("Expert Keep Pressure Plates 2"):
# Always necessary
self.assertAccessDependency(
["Keep Pressure Plates 2"],
[["Keep Pressure Plates 1 Exit (Door)"]],
only_check_listed=True,
)
# Always necessary
self.assertAccessDependency(
["Keep Pressure Plates 2"],
[["Keep Pressure Plates 3 Exit (Door)"]],
only_check_listed=True,
)
# All the possible "Exit methods" from PP3
self.assertAccessDependency(
["Keep Pressure Plates 2"],
[
["Keep Shadows Shortcut (Door)"],
["Keep Pressure Plates 4 Exit (Door)", "Keep Tower Shortcut (Door)"],
["Keep Pressure Plates 4 Exit (Door)", "Keep Hedge Maze 4 Exit (Door)",
"Keep Hedge Maze 4 Shortcut (Door)"],
["Keep Pressure Plates 4 Exit (Door)", "Keep Hedge Maze 4 Exit (Door)",
"Keep Hedge Maze 3 Exit (Door)", "Keep Hedge Maze 3 Shortcut (Door)"],
["Keep Pressure Plates 4 Exit (Door)", "Keep Hedge Maze 4 Exit (Door)",
"Keep Hedge Maze 3 Exit (Door)", "Keep Hedge Maze 2 Exit (Door)",
"Keep Hedge Maze 2 Shortcut (Door)"],
["Keep Pressure Plates 4 Exit (Door)", "Keep Hedge Maze 4 Exit (Door)",
"Keep Hedge Maze 3 Exit (Door)", "Keep Hedge Maze 2 Exit (Door)", "Keep Hedge Maze 1 Exit (Door)"],
],
only_check_listed=True,
)