67 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			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,
 | |
|             )
 |