* Add hidden early symbol item option, make some unit tests * Add early symbol item false to the arrows test * I guess it's not an issue * more tests * assertEqual * cleanup * add minimum symbols test for all 3 modes * Formatting * Add more minimal beatability tests * one more for the road * I HATE THIS AAAAAAAAAAAHHHHHHHHHHH WHY DID WE GO WITH OPTIONS * loiaqeäsdhgalikSDGHjasDÖKHGASKLDÖGHJASKLJGHJSAÖkfaöslifjasöfASGJÖASDLFGJ'sklgösLGIKsdhJLGÖsdfjälghklDASFJghjladshfgjasdfälkjghasdöLfghasd-kjgjASDLÖGHAESKDLJGJÖsdaLGJHsadöKGjFDSLAkgjölSÄDghbASDFKGjasdLJGhjLÖSDGHLJASKDkgjldafjghjÖLADSFghäasdökgjäsadjlgkjsadkLHGsaDÖLGSADGÖLwSdlgkJLwDSFÄLHBJsaöfdkHweaFGIoeWjvlkdösmVJÄlsafdJKhvjdsJHFGLsdaövhWDsköLV-ksdFJHGVöSEKD * fix imports (within apworld needs to be relative) * Update worlds/witness/options.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Sure * good suggestion * subtest * Add some EP shuffle unit tests, also an explicit event-checking unit test * add more tests yay * oops * mypy * Update worlds/witness/options.py Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> * Collapse into one test :( * More efficiency * line length * More collapsing * Cleanup and docstrings --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from ..rules import _has_lasers
 | 
						|
from ..test import WitnessTestBase
 | 
						|
 | 
						|
 | 
						|
class TestDisableNonRandomized(WitnessTestBase):
 | 
						|
    options = {
 | 
						|
        "disable_non_randomized_puzzles": True,
 | 
						|
        "shuffle_doors": "panels",
 | 
						|
        "early_symbol_item": False,
 | 
						|
    }
 | 
						|
 | 
						|
    def test_locations_got_disabled_and_alternate_activation_triggers_work(self) -> None:
 | 
						|
        """
 | 
						|
        Test the different behaviors of the disable_non_randomized mode:
 | 
						|
 | 
						|
        1. Unrandomized locations like Orchard Apple Tree 5 are disabled.
 | 
						|
        2. Certain doors or lasers that would usually be activated by unrandomized panels depend on event items instead.
 | 
						|
        3. These alternate activations are tied to solving Discarded Panels.
 | 
						|
        """
 | 
						|
 | 
						|
        with self.subTest("Test that unrandomized locations are disabled."):
 | 
						|
            self.assert_location_does_not_exist("Orchard Apple Tree 5")
 | 
						|
 | 
						|
        with self.subTest("Test that alternate activation trigger events exist."):
 | 
						|
            self.assert_dependency_on_event_item(
 | 
						|
                self.world.get_entrance("Town Tower After Third Door to Town Tower Top"),
 | 
						|
                "Town Tower 4th Door Opens",
 | 
						|
            )
 | 
						|
 | 
						|
        with self.subTest("Test that alternate activation triggers award lasers."):
 | 
						|
            self.assertFalse(_has_lasers(1, self.world, False)(self.multiworld.state))
 | 
						|
 | 
						|
            self.collect_by_name("Triangles")
 | 
						|
 | 
						|
            # Alternate triggers yield Bunker Laser (Mountainside Discard) and Monastery Laser (Desert Discard)
 | 
						|
            self.assertTrue(_has_lasers(2, self.world, False)(self.multiworld.state))
 | 
						|
            self.assertFalse(_has_lasers(3, self.world, False)(self.multiworld.state))
 |