46 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from . import ZillionTestBase
 | 
						|
 | 
						|
from .. import ZillionWorld
 | 
						|
from ..options import ZillionJumpLevels, ZillionGunLevels, ZillionOptions, ZillionPriorityDeadEnds, validate
 | 
						|
from zilliandomizer.options import VBLR_CHOICES
 | 
						|
 | 
						|
 | 
						|
class OptionsTest(ZillionTestBase):
 | 
						|
    auto_construct = False
 | 
						|
 | 
						|
    def test_validate_default(self) -> None:
 | 
						|
        self.world_setup()
 | 
						|
        options = self.multiworld.worlds[1].options
 | 
						|
        assert isinstance(options, ZillionOptions)
 | 
						|
        validate(options)
 | 
						|
 | 
						|
    def test_vblr_ap_to_zz(self) -> None:
 | 
						|
        """ all of the valid values for the AP options map to valid values for ZZ options """
 | 
						|
        for option_name, vblr_class in (
 | 
						|
            ("jump_levels", ZillionJumpLevels),
 | 
						|
            ("gun_levels", ZillionGunLevels),
 | 
						|
        ):
 | 
						|
            for value in vblr_class.name_lookup.values():
 | 
						|
                self.options = {option_name: value}
 | 
						|
                self.world_setup()
 | 
						|
                options = self.multiworld.worlds[1].options
 | 
						|
                assert isinstance(options, ZillionOptions)
 | 
						|
                zz_options, _item_counts = validate(options)
 | 
						|
                assert getattr(zz_options, option_name) in VBLR_CHOICES
 | 
						|
 | 
						|
    # TODO: test validate with invalid combinations of options
 | 
						|
 | 
						|
 | 
						|
class DeadEndsTest(ZillionTestBase):
 | 
						|
    def test_vanilla_dead_end_names(self) -> None:
 | 
						|
        z_world = self.multiworld.worlds[1]
 | 
						|
        assert isinstance(z_world, ZillionWorld)
 | 
						|
        for loc_name in ZillionPriorityDeadEnds.vanilla_dead_ends:
 | 
						|
            assert any(loc.name == loc_name for loc in z_world.my_locations), f"{loc_name=} {z_world.my_locations=}"
 | 
						|
 | 
						|
    def test_always_dead_end_names(self) -> None:
 | 
						|
        z_world = self.multiworld.worlds[1]
 | 
						|
        assert isinstance(z_world, ZillionWorld)
 | 
						|
        for loc_name in ZillionPriorityDeadEnds.always_dead_ends:
 | 
						|
            assert any(loc.name == loc_name for loc in z_world.my_locations), f"{loc_name=} {z_world.my_locations=}"
 |