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