47 lines
2.3 KiB
Python
47 lines
2.3 KiB
Python
import random
|
|
import sys
|
|
import unittest
|
|
|
|
from .. import StardewOptions, options
|
|
from ..regions import stardew_valley_regions, mandatory_connections, randomize_connections, RandomizationFlag
|
|
|
|
connections_by_name = {connection.name for connection in mandatory_connections}
|
|
regions_by_name = {region.name for region in stardew_valley_regions}
|
|
|
|
|
|
class TestRegions(unittest.TestCase):
|
|
def test_region_exits_lead_somewhere(self):
|
|
for region in stardew_valley_regions:
|
|
with self.subTest(region=region):
|
|
for exit in region.exits:
|
|
assert exit in connections_by_name, f"{region.name} is leading to {exit} but it does not exist."
|
|
|
|
def test_connection_lead_somewhere(self):
|
|
for connection in mandatory_connections:
|
|
with self.subTest(connection=connection):
|
|
assert connection.destination in regions_by_name, \
|
|
f"{connection.name} is leading to {connection.destination} but it does not exist."
|
|
|
|
|
|
class TestEntranceRando(unittest.TestCase):
|
|
|
|
def test_pelican_town_entrance_randomization(self):
|
|
for option, flag in [(options.EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN),
|
|
(options.EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION)]:
|
|
with self.subTest(option=option, flag=flag):
|
|
seed = random.randrange(sys.maxsize)
|
|
rand = random.Random(seed)
|
|
world_options = StardewOptions({options.EntranceRandomization.internal_name: option})
|
|
|
|
_, randomized_connections = randomize_connections(rand, world_options)
|
|
|
|
for connection in mandatory_connections:
|
|
if flag in connection.flag:
|
|
assert connection.name in randomized_connections, \
|
|
f"Connection {connection.name} should be randomized but it is not in the output. Seed = {seed}"
|
|
assert connection.reverse in randomized_connections, \
|
|
f"Connection {connection.reverse} should be randomized but it is not in the output. Seed = {seed}"
|
|
|
|
assert len(set(randomized_connections.values())) == len(
|
|
randomized_connections.values()), f"Connections are duplicated in randomization. Seed = {seed}"
|