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, | ||
|  |             ) |