Archipelago/worlds/zillion/test/TestOptions.py

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