mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-05-20 09:51:46 -07:00
57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import random
|
|
import unittest
|
|
from types import SimpleNamespace
|
|
|
|
from worlds.alttp.PotShuffle import (
|
|
POT_KEY,
|
|
POT_HOLE,
|
|
generate_pot_shuffle,
|
|
get_unique_pot_item_position,
|
|
)
|
|
|
|
|
|
class TestPotShuffle(unittest.TestCase):
|
|
def test_reserved_key_rooms_only_place_actual_keys(self) -> None:
|
|
for seed in range(10):
|
|
world = SimpleNamespace(
|
|
random=random.Random(seed),
|
|
options=SimpleNamespace(retro_bow=False),
|
|
)
|
|
shuffled_pots = generate_pot_shuffle(world)
|
|
conveyor_cross_keys = [
|
|
pot for pot in shuffled_pots[0x8B]
|
|
if pot.item == POT_KEY
|
|
]
|
|
self.assertEqual(len(conveyor_cross_keys), 1)
|
|
|
|
def test_get_unique_pot_item_position_returns_single_match(self) -> None:
|
|
world = SimpleNamespace(
|
|
random=random.Random(0),
|
|
options=SimpleNamespace(retro_bow=False),
|
|
)
|
|
shuffled_pots = generate_pot_shuffle(world)
|
|
|
|
self.assertEqual(
|
|
get_unique_pot_item_position(shuffled_pots, 0x36, POT_KEY),
|
|
(114, 16),
|
|
)
|
|
|
|
def test_reserved_hole_room_keeps_hole_fixed(self) -> None:
|
|
for seed in range(25):
|
|
world = SimpleNamespace(
|
|
random=random.Random(seed),
|
|
options=SimpleNamespace(retro_bow=False),
|
|
)
|
|
shuffled_pots = generate_pot_shuffle(world)
|
|
hole_positions = [
|
|
(pot.x, pot.y)
|
|
for pot in shuffled_pots[206]
|
|
if pot.item == POT_HOLE
|
|
]
|
|
|
|
self.assertEqual(hole_positions, [(204, 11)])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|