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=}"
 | 
