Tests: now autoload tests from /worlds/*/test (#1318)
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
This commit is contained in:
24
worlds/alttp/test/dungeons/TestAgahnimsTower.py
Normal file
24
worlds/alttp/test/dungeons/TestAgahnimsTower.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestAgahnimsTower(TestDungeon):
|
||||
|
||||
def testTower(self):
|
||||
self.starting_regions = ['Agahnims Tower']
|
||||
self.run_tests([
|
||||
["Castle Tower - Room 03", False, []],
|
||||
["Castle Tower - Room 03", False, [], ['Progressive Sword', 'Hammer', 'Progressive Bow', 'Fire Rod', 'Ice Rod', 'Cane of Somaria', 'Cane of Byrna']],
|
||||
["Castle Tower - Room 03", True, ['Progressive Sword']],
|
||||
|
||||
["Castle Tower - Dark Maze", False, []],
|
||||
["Castle Tower - Dark Maze", False, [], ['Small Key (Agahnims Tower)']],
|
||||
["Castle Tower - Dark Maze", False, [], ['Lamp']],
|
||||
["Castle Tower - Dark Maze", False, [], ['Progressive Sword', 'Hammer', 'Progressive Bow', 'Fire Rod', 'Ice Rod', 'Cane of Somaria', 'Cane of Byrna']],
|
||||
["Castle Tower - Dark Maze", True, ['Progressive Sword', 'Small Key (Agahnims Tower)', 'Lamp']],
|
||||
|
||||
["Agahnim 1", False, []],
|
||||
["Agahnim 1", False, ['Small Key (Agahnims Tower)'], ['Small Key (Agahnims Tower)']],
|
||||
["Agahnim 1", False, [], ['Progressive Sword']],
|
||||
["Agahnim 1", False, [], ['Lamp']],
|
||||
["Agahnim 1", True, ['Small Key (Agahnims Tower)', 'Small Key (Agahnims Tower)', 'Lamp', 'Progressive Sword']],
|
||||
])
|
||||
80
worlds/alttp/test/dungeons/TestDarkPalace.py
Normal file
80
worlds/alttp/test/dungeons/TestDarkPalace.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestDarkPalace(TestDungeon):
|
||||
|
||||
def testDarkPalace(self):
|
||||
self.starting_regions = ['Palace of Darkness (Entrance)']
|
||||
key = 'Small Key (Palace of Darkness)'
|
||||
self.run_tests([
|
||||
["Palace of Darkness - Shooter Room", True, []],
|
||||
|
||||
["Palace of Darkness - The Arena - Ledge", False, []],
|
||||
["Palace of Darkness - The Arena - Ledge", False, [], ['Progressive Bow']],
|
||||
["Palace of Darkness - The Arena - Ledge", True, ['Progressive Bow']],
|
||||
|
||||
["Palace of Darkness - Map Chest", False, []],
|
||||
["Palace of Darkness - Map Chest", False, [], ['Progressive Bow']],
|
||||
["Palace of Darkness - Map Chest", True, ['Progressive Bow']],
|
||||
|
||||
#Lower requirement for self-locking key
|
||||
#No lower requirement when bow/hammer is out of logic
|
||||
["Palace of Darkness - Big Key Chest", False, []],
|
||||
["Palace of Darkness - Big Key Chest", False, [key]*5, [key]],
|
||||
["Palace of Darkness - Big Key Chest", True, [key]*6],
|
||||
|
||||
["Palace of Darkness - The Arena - Bridge", False, []],
|
||||
["Palace of Darkness - The Arena - Bridge", False, [], [key, 'Progressive Bow']],
|
||||
["Palace of Darkness - The Arena - Bridge", False, [], [key, 'Hammer']],
|
||||
["Palace of Darkness - The Arena - Bridge", True, [key]],
|
||||
["Palace of Darkness - The Arena - Bridge", True, ['Progressive Bow', 'Hammer']],
|
||||
|
||||
["Palace of Darkness - Stalfos Basement", False, []],
|
||||
["Palace of Darkness - Stalfos Basement", False, [], [key, 'Progressive Bow']],
|
||||
["Palace of Darkness - Stalfos Basement", False, [], [key, 'Hammer']],
|
||||
["Palace of Darkness - Stalfos Basement", True, [key]],
|
||||
["Palace of Darkness - Stalfos Basement", True, ['Progressive Bow', 'Hammer']],
|
||||
|
||||
["Palace of Darkness - Compass Chest", False, []],
|
||||
["Palace of Darkness - Compass Chest", False, [key]*3, [key]],
|
||||
["Palace of Darkness - Compass Chest", True, [key]*4],
|
||||
|
||||
#@todo: Advanced?
|
||||
["Palace of Darkness - Dark Basement - Left", False, []],
|
||||
["Palace of Darkness - Dark Basement - Left", False, [], ['Lamp']],
|
||||
["Palace of Darkness - Dark Basement - Left", False, [key]*3, [key]],
|
||||
["Palace of Darkness - Dark Basement - Left", True, ['Lamp'] + [key]*4],
|
||||
|
||||
["Palace of Darkness - Dark Basement - Right", False, []],
|
||||
["Palace of Darkness - Dark Basement - Right", False, [], ['Lamp']],
|
||||
["Palace of Darkness - Dark Basement - Right", False, [key] * 3, [key]],
|
||||
["Palace of Darkness - Dark Basement - Right", True, ['Lamp'] + [key] * 4],
|
||||
|
||||
["Palace of Darkness - Harmless Hellway", False, []],
|
||||
["Palace of Darkness - Harmless Hellway", False, [key]*5, [key]],
|
||||
["Palace of Darkness - Harmless Hellway", True, [key]*6],
|
||||
|
||||
["Palace of Darkness - Dark Maze - Top", False, []],
|
||||
["Palace of Darkness - Dark Maze - Top", False, [], ['Lamp']],
|
||||
["Palace of Darkness - Dark Maze - Top", False, [key]*5, [key]],
|
||||
["Palace of Darkness - Dark Maze - Top", True, ['Lamp'] + [key]*6],
|
||||
|
||||
["Palace of Darkness - Dark Maze - Bottom", False, []],
|
||||
["Palace of Darkness - Dark Maze - Bottom", False, [], ['Lamp']],
|
||||
["Palace of Darkness - Dark Maze - Bottom", False, [key]*5, [key]],
|
||||
["Palace of Darkness - Dark Maze - Bottom", True, ['Lamp'] + [key]*6],
|
||||
|
||||
["Palace of Darkness - Big Chest", False, []],
|
||||
["Palace of Darkness - Big Chest", False, [], ['Lamp']],
|
||||
["Palace of Darkness - Big Chest", False, [], ['Big Key (Palace of Darkness)']],
|
||||
["Palace of Darkness - Big Chest", False, [key]*5, [key]],
|
||||
["Palace of Darkness - Big Chest", True, ['Lamp', 'Big Key (Palace of Darkness)'] + [key]*6],
|
||||
|
||||
["Palace of Darkness - Boss", False, []],
|
||||
["Palace of Darkness - Boss", False, [], ['Lamp']],
|
||||
["Palace of Darkness - Boss", False, [], ['Hammer']],
|
||||
["Palace of Darkness - Boss", False, [], ['Progressive Bow']],
|
||||
["Palace of Darkness - Boss", False, [], ['Big Key (Palace of Darkness)']],
|
||||
["Palace of Darkness - Boss", False, [key]*5, [key]],
|
||||
["Palace of Darkness - Boss", True, ['Lamp', 'Hammer', 'Progressive Bow', 'Big Key (Palace of Darkness)'] + [key]*6],
|
||||
])
|
||||
39
worlds/alttp/test/dungeons/TestDesertPalace.py
Normal file
39
worlds/alttp/test/dungeons/TestDesertPalace.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestDesertPalace(TestDungeon):
|
||||
|
||||
def testDesertPalace(self):
|
||||
self.starting_regions = ['Desert Palace North', 'Desert Palace Main (Inner)', 'Desert Palace Main (Outer)']
|
||||
self.run_tests([
|
||||
["Desert Palace - Map Chest", True, []],
|
||||
|
||||
["Desert Palace - Big Chest", False, []],
|
||||
["Desert Palace - Big Chest", False, [], ['Big Key (Desert Palace)']],
|
||||
["Desert Palace - Big Chest", True, ['Big Key (Desert Palace)']],
|
||||
|
||||
["Desert Palace - Torch", False, []],
|
||||
["Desert Palace - Torch", False, [], ['Pegasus Boots']],
|
||||
["Desert Palace - Torch", True, ['Pegasus Boots']],
|
||||
|
||||
["Desert Palace - Compass Chest", False, []],
|
||||
["Desert Palace - Compass Chest", False, [], ['Small Key (Desert Palace)']],
|
||||
["Desert Palace - Compass Chest", True, ['Small Key (Desert Palace)']],
|
||||
|
||||
#@todo: Require a real weapon for enemizer?
|
||||
["Desert Palace - Big Key Chest", False, []],
|
||||
["Desert Palace - Big Key Chest", False, [], ['Small Key (Desert Palace)']],
|
||||
["Desert Palace - Big Key Chest", True, ['Small Key (Desert Palace)']],
|
||||
|
||||
["Desert Palace - Boss", False, []],
|
||||
["Desert Palace - Boss", False, [], ['Small Key (Desert Palace)']],
|
||||
["Desert Palace - Boss", False, [], ['Big Key (Desert Palace)']],
|
||||
["Desert Palace - Boss", False, [], ['Lamp', 'Fire Rod']],
|
||||
["Desert Palace - Boss", False, [], ['Progressive Sword', 'Hammer', 'Fire Rod', 'Ice Rod', 'Progressive Bow', 'Cane of Somaria', 'Cane of Byrna']],
|
||||
["Desert Palace - Boss", True, ['Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Fire Rod']],
|
||||
["Desert Palace - Boss", True, ['Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Lamp', 'Progressive Sword']],
|
||||
["Desert Palace - Boss", True, ['Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Lamp', 'Hammer']],
|
||||
["Desert Palace - Boss", True, ['Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Lamp', 'Ice Rod']],
|
||||
["Desert Palace - Boss", True, ['Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Lamp', 'Cane of Somaria']],
|
||||
["Desert Palace - Boss", True, ['Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Lamp', 'Cane of Byrna']],
|
||||
])
|
||||
66
worlds/alttp/test/dungeons/TestDungeon.py
Normal file
66
worlds/alttp/test/dungeons/TestDungeon.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import unittest
|
||||
from argparse import Namespace
|
||||
|
||||
from BaseClasses import MultiWorld, CollectionState, ItemClassification
|
||||
from worlds.alttp.Dungeons import create_dungeons, get_dungeon_item_pool
|
||||
from worlds.alttp.EntranceShuffle import mandatory_connections, connect_simple
|
||||
from worlds.alttp.ItemPool import difficulties, generate_itempool
|
||||
from worlds.alttp.Items import ItemFactory
|
||||
from worlds.alttp.Regions import create_regions
|
||||
from worlds.alttp.Shops import create_shops
|
||||
from worlds.alttp.Rules import set_rules
|
||||
from worlds import AutoWorld
|
||||
|
||||
|
||||
class TestDungeon(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.multiworld = MultiWorld(1)
|
||||
args = Namespace()
|
||||
for name, option in AutoWorld.AutoWorldRegister.world_types["A Link to the Past"].option_definitions.items():
|
||||
setattr(args, name, {1: option.from_any(option.default)})
|
||||
self.multiworld.set_options(args)
|
||||
self.multiworld.set_default_common_options()
|
||||
self.starting_regions = [] # Where to start exploring
|
||||
self.remove_exits = [] # Block dungeon exits
|
||||
self.multiworld.difficulty_requirements[1] = difficulties['normal']
|
||||
create_regions(self.multiworld, 1)
|
||||
create_dungeons(self.multiworld, 1)
|
||||
create_shops(self.multiworld, 1)
|
||||
for exitname, regionname in mandatory_connections:
|
||||
connect_simple(self.multiworld, exitname, regionname, 1)
|
||||
connect_simple(self.multiworld, 'Big Bomb Shop', 'Big Bomb Shop', 1)
|
||||
self.multiworld.get_region('Menu', 1).exits = []
|
||||
self.multiworld.swamp_patch_required[1] = True
|
||||
self.multiworld.worlds[1].set_rules()
|
||||
self.multiworld.worlds[1].create_items()
|
||||
self.multiworld.itempool.extend(get_dungeon_item_pool(self.multiworld))
|
||||
self.multiworld.itempool.extend(ItemFactory(['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Beat Agahnim 1', 'Beat Agahnim 2', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7'], 1))
|
||||
|
||||
def run_tests(self, access_pool):
|
||||
for exit in self.remove_exits:
|
||||
self.multiworld.get_entrance(exit, 1).connected_region = self.multiworld.get_region('Menu', 1)
|
||||
|
||||
for location, access, *item_pool in access_pool:
|
||||
items = item_pool[0]
|
||||
all_except = item_pool[1] if len(item_pool) > 1 else None
|
||||
with self.subTest(location=location, access=access, items=items, all_except=all_except):
|
||||
if all_except and len(all_except) > 0:
|
||||
items = self.multiworld.itempool[:]
|
||||
items = [item for item in items if item.name not in all_except and not ("Bottle" in item.name and "AnyBottle" in all_except)]
|
||||
items.extend(ItemFactory(item_pool[0], 1))
|
||||
else:
|
||||
items = ItemFactory(items, 1)
|
||||
state = CollectionState(self.multiworld)
|
||||
state.reachable_regions[1].add(self.multiworld.get_region('Menu', 1))
|
||||
for region_name in self.starting_regions:
|
||||
region = self.multiworld.get_region(region_name, 1)
|
||||
state.reachable_regions[1].add(region)
|
||||
for exit in region.exits:
|
||||
if exit.connected_region is not None:
|
||||
state.blocked_connections[1].add(exit)
|
||||
|
||||
for item in items:
|
||||
item.classification = ItemClassification.progression
|
||||
state.collect(item)
|
||||
|
||||
self.assertEqual(self.multiworld.get_location(location, 1).can_reach(state), access)
|
||||
29
worlds/alttp/test/dungeons/TestEasternPalace.py
Normal file
29
worlds/alttp/test/dungeons/TestEasternPalace.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestEasternPalace(TestDungeon):
|
||||
|
||||
def testEastern(self):
|
||||
self.starting_regions = ["Eastern Palace"]
|
||||
self.run_tests([
|
||||
["Eastern Palace - Compass Chest", True, []],
|
||||
|
||||
["Eastern Palace - Cannonball Chest", True, []],
|
||||
|
||||
["Eastern Palace - Big Chest", False, []],
|
||||
["Eastern Palace - Big Chest", False, [], ['Big Key (Eastern Palace)']],
|
||||
["Eastern Palace - Big Chest", True, ['Big Key (Eastern Palace)']],
|
||||
|
||||
["Eastern Palace - Map Chest", True, []],
|
||||
|
||||
["Eastern Palace - Big Key Chest", False, []],
|
||||
["Eastern Palace - Big Key Chest", False, [], ['Lamp']],
|
||||
["Eastern Palace - Big Key Chest", True, ['Lamp']],
|
||||
|
||||
#@todo: Advanced?
|
||||
["Eastern Palace - Boss", False, []],
|
||||
["Eastern Palace - Boss", False, [], ['Lamp']],
|
||||
["Eastern Palace - Boss", False, [], ['Progressive Bow']],
|
||||
["Eastern Palace - Boss", False, [], ['Big Key (Eastern Palace)']],
|
||||
["Eastern Palace - Boss", True, ['Lamp', 'Progressive Bow', 'Big Key (Eastern Palace)']]
|
||||
])
|
||||
144
worlds/alttp/test/dungeons/TestGanonsTower.py
Normal file
144
worlds/alttp/test/dungeons/TestGanonsTower.py
Normal file
@@ -0,0 +1,144 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestGanonsTower(TestDungeon):
|
||||
|
||||
def testGanonsTower(self):
|
||||
self.starting_regions = ['Ganons Tower (Entrance)']
|
||||
self.run_tests([
|
||||
["Ganons Tower - Bob's Torch", False, []],
|
||||
["Ganons Tower - Bob's Torch", False, [], ['Pegasus Boots']],
|
||||
["Ganons Tower - Bob's Torch", True, ['Pegasus Boots']],
|
||||
|
||||
["Ganons Tower - DMs Room - Top Left", False, []],
|
||||
["Ganons Tower - DMs Room - Top Left", False, [], ['Hammer']],
|
||||
["Ganons Tower - DMs Room - Top Left", False, [], ['Hookshot']],
|
||||
["Ganons Tower - DMs Room - Top Left", True, ['Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - DMs Room - Top Right", False, []],
|
||||
["Ganons Tower - DMs Room - Top Right", False, [], ['Hammer']],
|
||||
["Ganons Tower - DMs Room - Top Right", False, [], ['Hookshot']],
|
||||
["Ganons Tower - DMs Room - Top Right", True, ['Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - DMs Room - Bottom Left", False, []],
|
||||
["Ganons Tower - DMs Room - Bottom Left", False, [], ['Hammer']],
|
||||
["Ganons Tower - DMs Room - Bottom Left", False, [], ['Hookshot']],
|
||||
["Ganons Tower - DMs Room - Bottom Left", True, ['Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - DMs Room - Bottom Right", False, []],
|
||||
["Ganons Tower - DMs Room - Bottom Right", False, [], ['Hammer']],
|
||||
["Ganons Tower - DMs Room - Bottom Right", False, [], ['Hookshot']],
|
||||
["Ganons Tower - DMs Room - Bottom Right", True, ['Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Randomizer Room - Top Left", False, []],
|
||||
["Ganons Tower - Randomizer Room - Top Left", False, [], ['Hammer']],
|
||||
["Ganons Tower - Randomizer Room - Top Left", False, [], ['Hookshot']],
|
||||
["Ganons Tower - Randomizer Room - Top Left", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Randomizer Room - Top Right", False, []],
|
||||
["Ganons Tower - Randomizer Room - Top Right", False, [], ['Hammer']],
|
||||
["Ganons Tower - Randomizer Room - Top Right", False, [], ['Hookshot']],
|
||||
["Ganons Tower - Randomizer Room - Top Right", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Randomizer Room - Bottom Left", False, []],
|
||||
["Ganons Tower - Randomizer Room - Bottom Left", False, [], ['Hammer']],
|
||||
["Ganons Tower - Randomizer Room - Bottom Left", False, [], ['Hookshot']],
|
||||
["Ganons Tower - Randomizer Room - Bottom Left", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Randomizer Room - Bottom Right", False, []],
|
||||
["Ganons Tower - Randomizer Room - Bottom Right", False, [], ['Hammer']],
|
||||
["Ganons Tower - Randomizer Room - Bottom Right", False, [], ['Hookshot']],
|
||||
["Ganons Tower - Randomizer Room - Bottom Right", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Firesnake Room", False, []],
|
||||
["Ganons Tower - Firesnake Room", False, [], ['Hammer']],
|
||||
["Ganons Tower - Firesnake Room", False, [], ['Hookshot']],
|
||||
["Ganons Tower - Firesnake Room", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Map Chest", False, []],
|
||||
["Ganons Tower - Map Chest", False, [], ['Hammer']],
|
||||
["Ganons Tower - Map Chest", False, [], ['Hookshot', 'Pegasus Boots']],
|
||||
["Ganons Tower - Map Chest", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
["Ganons Tower - Map Chest", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hammer', 'Pegasus Boots']],
|
||||
|
||||
["Ganons Tower - Big Chest", False, []],
|
||||
["Ganons Tower - Big Chest", False, [], ['Big Key (Ganons Tower)']],
|
||||
["Ganons Tower - Big Chest", True, ['Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Cane of Somaria', 'Fire Rod']],
|
||||
["Ganons Tower - Big Chest", True, ['Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Hope Room - Left", True, []],
|
||||
|
||||
["Ganons Tower - Hope Room - Right", True, []],
|
||||
|
||||
["Ganons Tower - Bob's Chest", False, []],
|
||||
["Ganons Tower - Bob's Chest", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Cane of Somaria', 'Fire Rod']],
|
||||
["Ganons Tower - Bob's Chest", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Tile Room", False, []],
|
||||
["Ganons Tower - Tile Room", False, [], ['Cane of Somaria']],
|
||||
["Ganons Tower - Tile Room", True, ['Cane of Somaria']],
|
||||
|
||||
["Ganons Tower - Compass Room - Top Left", False, []],
|
||||
["Ganons Tower - Compass Room - Top Left", False, [], ['Cane of Somaria']],
|
||||
["Ganons Tower - Compass Room - Top Left", False, [], ['Fire Rod']],
|
||||
["Ganons Tower - Compass Room - Top Left", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod', 'Cane of Somaria']],
|
||||
|
||||
["Ganons Tower - Compass Room - Top Right", False, []],
|
||||
["Ganons Tower - Compass Room - Top Right", False, [], ['Cane of Somaria']],
|
||||
["Ganons Tower - Compass Room - Top Right", False, [], ['Fire Rod']],
|
||||
["Ganons Tower - Compass Room - Top Right", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod', 'Cane of Somaria']],
|
||||
|
||||
["Ganons Tower - Compass Room - Bottom Left", False, []],
|
||||
["Ganons Tower - Compass Room - Bottom Left", False, [], ['Cane of Somaria']],
|
||||
["Ganons Tower - Compass Room - Bottom Left", False, [], ['Fire Rod']],
|
||||
["Ganons Tower - Compass Room - Bottom Left", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod', 'Cane of Somaria']],
|
||||
|
||||
["Ganons Tower - Compass Room - Bottom Right", False, []],
|
||||
["Ganons Tower - Compass Room - Bottom Right", False, [], ['Cane of Somaria']],
|
||||
["Ganons Tower - Compass Room - Bottom Right", False, [], ['Fire Rod']],
|
||||
["Ganons Tower - Compass Room - Bottom Right", True, ['Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod', 'Cane of Somaria']],
|
||||
|
||||
["Ganons Tower - Big Key Chest", False, []],
|
||||
["Ganons Tower - Big Key Chest", True, ['Progressive Bow', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Cane of Somaria', 'Fire Rod']],
|
||||
["Ganons Tower - Big Key Chest", True, ['Progressive Bow', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Big Key Room - Left", False, []],
|
||||
["Ganons Tower - Big Key Room - Left", True, ['Progressive Bow', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Cane of Somaria', 'Fire Rod']],
|
||||
["Ganons Tower - Big Key Room - Left", True, ['Progressive Bow', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Big Key Room - Right", False, []],
|
||||
["Ganons Tower - Big Key Room - Right", True, ['Progressive Bow', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Cane of Somaria', 'Fire Rod']],
|
||||
["Ganons Tower - Big Key Room - Right", True, ['Progressive Bow', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Hookshot', 'Hammer']],
|
||||
|
||||
["Ganons Tower - Mini Helmasaur Room - Left", False, []],
|
||||
["Ganons Tower - Mini Helmasaur Room - Left", False, [], ['Progressive Bow']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Left", False, [], ['Big Key (Ganons Tower)']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Left", False, [], ['Lamp', 'Fire Rod']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Left", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Lamp']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Left", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod']],
|
||||
|
||||
["Ganons Tower - Mini Helmasaur Room - Right", False, []],
|
||||
["Ganons Tower - Mini Helmasaur Room - Right", False, [], ['Progressive Bow']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Right", False, [], ['Big Key (Ganons Tower)']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Right", False, [], ['Lamp', 'Fire Rod']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Right", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Lamp']],
|
||||
["Ganons Tower - Mini Helmasaur Room - Right", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod']],
|
||||
|
||||
["Ganons Tower - Pre-Moldorm Chest", False, []],
|
||||
["Ganons Tower - Pre-Moldorm Chest", False, [], ['Progressive Bow']],
|
||||
["Ganons Tower - Pre-Moldorm Chest", False, [], ['Big Key (Ganons Tower)']],
|
||||
["Ganons Tower - Pre-Moldorm Chest", False, [], ['Lamp', 'Fire Rod']],
|
||||
["Ganons Tower - Pre-Moldorm Chest", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Lamp']],
|
||||
["Ganons Tower - Pre-Moldorm Chest", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod']],
|
||||
|
||||
["Ganons Tower - Validation Chest", False, []],
|
||||
["Ganons Tower - Validation Chest", False, [], ['Hookshot']],
|
||||
["Ganons Tower - Validation Chest", False, [], ['Progressive Bow']],
|
||||
["Ganons Tower - Validation Chest", False, [], ['Big Key (Ganons Tower)']],
|
||||
["Ganons Tower - Validation Chest", False, [], ['Lamp', 'Fire Rod']],
|
||||
["Ganons Tower - Validation Chest", False, [], ['Progressive Sword', 'Hammer']],
|
||||
["Ganons Tower - Validation Chest", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Lamp', 'Hookshot', 'Progressive Sword']],
|
||||
["Ganons Tower - Validation Chest", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod', 'Hookshot', 'Progressive Sword']],
|
||||
["Ganons Tower - Validation Chest", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Lamp', 'Hookshot', 'Hammer']],
|
||||
["Ganons Tower - Validation Chest", True, ['Progressive Bow', 'Big Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Small Key (Ganons Tower)', 'Fire Rod', 'Hookshot', 'Hammer']],
|
||||
])
|
||||
79
worlds/alttp/test/dungeons/TestIcePalace.py
Normal file
79
worlds/alttp/test/dungeons/TestIcePalace.py
Normal file
@@ -0,0 +1,79 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestIcePalace(TestDungeon):
|
||||
|
||||
def testIcePalace(self):
|
||||
self.starting_regions = ['Ice Palace (Entrance)']
|
||||
self.run_tests([
|
||||
["Ice Palace - Big Key Chest", False, []],
|
||||
["Ice Palace - Big Key Chest", False, [], ['Hammer']],
|
||||
["Ice Palace - Big Key Chest", False, [], ['Progressive Glove']],
|
||||
["Ice Palace - Big Key Chest", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Big Key Chest", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Big Key Chest", True, ['Progressive Glove', 'Fire Rod', 'Hammer', 'Hookshot', 'Small Key (Ice Palace)']],
|
||||
["Ice Palace - Big Key Chest", True, ['Progressive Glove', 'Bombos', 'Progressive Sword', 'Hammer', 'Hookshot', 'Small Key (Ice Palace)']],
|
||||
#@todo: Change from item randomizer - Right side key door is only in logic if big key is in there
|
||||
#["Ice Palace - Big Key Chest", True, ['Progressive Glove', 'Cane of Byrna', 'Fire Rod', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Big Key Chest", True, ['Progressive Glove', 'Cane of Byrna', 'Bombos', 'Progressive Sword', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Big Key Chest", True, ['Progressive Glove', 'Cape', 'Fire Rod', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Big Key Chest", True, ['Progressive Glove', 'Cape', 'Bombos', 'Progressive Sword', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
|
||||
["Ice Palace - Compass Chest", False, []],
|
||||
["Ice Palace - Compass Chest", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Compass Chest", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Compass Chest", True, ['Fire Rod']],
|
||||
["Ice Palace - Compass Chest", True, ['Bombos', 'Progressive Sword']],
|
||||
|
||||
["Ice Palace - Map Chest", False, []],
|
||||
["Ice Palace - Map Chest", False, [], ['Hammer']],
|
||||
["Ice Palace - Map Chest", False, [], ['Progressive Glove']],
|
||||
["Ice Palace - Map Chest", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Map Chest", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Map Chest", True, ['Progressive Glove', 'Fire Rod', 'Hammer', 'Hookshot', 'Small Key (Ice Palace)']],
|
||||
["Ice Palace - Map Chest", True, ['Progressive Glove', 'Bombos', 'Progressive Sword', 'Hammer', 'Hookshot', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Map Chest", True, ['Progressive Glove', 'Cane of Byrna', 'Fire Rod', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Map Chest", True, ['Progressive Glove', 'Cane of Byrna', 'Bombos', 'Progressive Sword', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Map Chest", True, ['Progressive Glove', 'Cape', 'Fire Rod', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Map Chest", True, ['Progressive Glove', 'Cape', 'Bombos', 'Progressive Sword', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
|
||||
["Ice Palace - Spike Room", False, []],
|
||||
["Ice Palace - Spike Room", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Spike Room", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Spike Room", True, ['Fire Rod', 'Hookshot', 'Small Key (Ice Palace)']],
|
||||
["Ice Palace - Spike Room", True, ['Bombos', 'Progressive Sword', 'Hookshot', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Spike Room", True, ['Cape', 'Fire Rod', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Spike Room", True, ['Cape', 'Bombos', 'Progressive Sword', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Spike Room", True, ['Cane of Byrna', 'Fire Rod', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
#["Ice Palace - Spike Room", True, ['Cane of Byrna', 'Bombos', 'Progressive Sword', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
|
||||
["Ice Palace - Freezor Chest", False, []],
|
||||
["Ice Palace - Freezor Chest", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Freezor Chest", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Freezor Chest", True, ['Fire Rod']],
|
||||
["Ice Palace - Freezor Chest", True, ['Bombos', 'Progressive Sword']],
|
||||
|
||||
["Ice Palace - Iced T Room", False, []],
|
||||
["Ice Palace - Iced T Room", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Iced T Room", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Iced T Room", True, ['Fire Rod']],
|
||||
["Ice Palace - Iced T Room", True, ['Bombos', 'Progressive Sword']],
|
||||
|
||||
["Ice Palace - Big Chest", False, []],
|
||||
["Ice Palace - Big Chest", False, [], ['Big Key (Ice Palace)']],
|
||||
["Ice Palace - Big Chest", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Big Chest", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Big Chest", True, ['Big Key (Ice Palace)', 'Fire Rod']],
|
||||
["Ice Palace - Big Chest", True, ['Big Key (Ice Palace)', 'Bombos', 'Progressive Sword']],
|
||||
|
||||
["Ice Palace - Boss", False, []],
|
||||
["Ice Palace - Boss", False, [], ['Hammer']],
|
||||
["Ice Palace - Boss", False, [], ['Progressive Glove']],
|
||||
["Ice Palace - Boss", False, [], ['Big Key (Ice Palace)']],
|
||||
["Ice Palace - Boss", False, [], ['Fire Rod', 'Bombos']],
|
||||
["Ice Palace - Boss", False, [], ['Fire Rod', 'Progressive Sword']],
|
||||
["Ice Palace - Boss", True, ['Progressive Glove', 'Big Key (Ice Palace)', 'Fire Rod', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
["Ice Palace - Boss", True, ['Progressive Glove', 'Big Key (Ice Palace)', 'Fire Rod', 'Hammer', 'Cane of Somaria', 'Small Key (Ice Palace)']],
|
||||
["Ice Palace - Boss", True, ['Progressive Glove', 'Big Key (Ice Palace)', 'Bombos', 'Progressive Sword', 'Hammer', 'Small Key (Ice Palace)', 'Small Key (Ice Palace)']],
|
||||
["Ice Palace - Boss", True, ['Progressive Glove', 'Big Key (Ice Palace)', 'Bombos', 'Progressive Sword', 'Hammer', 'Cane of Somaria', 'Small Key (Ice Palace)']],
|
||||
])
|
||||
84
worlds/alttp/test/dungeons/TestMiseryMire.py
Normal file
84
worlds/alttp/test/dungeons/TestMiseryMire.py
Normal file
@@ -0,0 +1,84 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestMiseryMire(TestDungeon):
|
||||
|
||||
def testMiseryMire(self):
|
||||
self.starting_regions = ['Misery Mire (Entrance)']
|
||||
self.run_tests([
|
||||
["Misery Mire - Bridge Chest", False, []],
|
||||
["Misery Mire - Bridge Chest", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Bridge Chest", False, [], ['Progressive Sword', 'Hammer', 'Fire Rod', 'Cane of Somaria', 'Progressive Bow', 'Ice Rod']], #Ice Rod works!
|
||||
["Misery Mire - Bridge Chest", True, ['Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Bridge Chest", True, ['Progressive Sword', 'Hookshot']],
|
||||
["Misery Mire - Bridge Chest", True, ['Hammer', 'Pegasus Boots']],
|
||||
["Misery Mire - Bridge Chest", True, ['Hammer', 'Hookshot']],
|
||||
["Misery Mire - Bridge Chest", True, ['Fire Rod', 'Pegasus Boots']],
|
||||
["Misery Mire - Bridge Chest", True, ['Fire Rod', 'Hookshot']],
|
||||
["Misery Mire - Bridge Chest", True, ['Cane of Somaria', 'Pegasus Boots']],
|
||||
["Misery Mire - Bridge Chest", True, ['Cane of Somaria', 'Hookshot']],
|
||||
["Misery Mire - Bridge Chest", True, ['Progressive Bow', 'Pegasus Boots']],
|
||||
["Misery Mire - Bridge Chest", True, ['Progressive Bow', 'Hookshot']],
|
||||
["Misery Mire - Bridge Chest", True, ['Ice Rod', 'Pegasus Boots']],
|
||||
["Misery Mire - Bridge Chest", True, ['Ice Rod', 'Hookshot']],
|
||||
|
||||
["Misery Mire - Big Chest", False, []],
|
||||
["Misery Mire - Big Chest", False, [], ['Big Key (Misery Mire)']],
|
||||
["Misery Mire - Big Chest", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Big Chest", False, [], ['Progressive Sword', 'Hammer', 'Fire Rod', 'Cane of Somaria', 'Progressive Bow', 'Ice Rod']],
|
||||
["Misery Mire - Big Chest", True, ['Big Key (Misery Mire)', 'Pegasus Boots', 'Progressive Sword']],
|
||||
["Misery Mire - Big Chest", True, ['Big Key (Misery Mire)', 'Hookshot', 'Progressive Sword']],
|
||||
|
||||
["Misery Mire - Main Lobby", False, []],
|
||||
["Misery Mire - Main Lobby", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Main Lobby", False, [], ['Small Key (Misery Mire)', 'Big Key (Misery Mire)']],
|
||||
["Misery Mire - Main Lobby", True, ['Small Key (Misery Mire)', 'Hookshot', 'Progressive Sword']],
|
||||
["Misery Mire - Main Lobby", True, ['Small Key (Misery Mire)', 'Pegasus Boots', 'Progressive Sword']],
|
||||
["Misery Mire - Main Lobby", True, ['Big Key (Misery Mire)', 'Hookshot', 'Progressive Sword']],
|
||||
["Misery Mire - Main Lobby", True, ['Big Key (Misery Mire)', 'Pegasus Boots', 'Progressive Sword']],
|
||||
|
||||
["Misery Mire - Big Key Chest", False, []],
|
||||
["Misery Mire - Big Key Chest", False, [], ['Fire Rod', 'Lamp']],
|
||||
["Misery Mire - Big Key Chest", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Big Key Chest", False, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)'], ['Small Key (Misery Mire)']],
|
||||
["Misery Mire - Big Key Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Lamp', 'Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Big Key Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Lamp', 'Progressive Sword', 'Hookshot']],
|
||||
["Misery Mire - Big Key Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Fire Rod', 'Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Big Key Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Fire Rod', 'Progressive Sword', 'Hookshot']],
|
||||
|
||||
["Misery Mire - Compass Chest", False, []],
|
||||
["Misery Mire - Compass Chest", False, [], ['Fire Rod', 'Lamp']],
|
||||
["Misery Mire - Compass Chest", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Compass Chest", False, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)'], ['Small Key (Misery Mire)']],
|
||||
["Misery Mire - Compass Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Lamp', 'Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Compass Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Lamp', 'Progressive Sword', 'Hookshot']],
|
||||
["Misery Mire - Compass Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Fire Rod', 'Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Compass Chest", True, ['Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Small Key (Misery Mire)', 'Fire Rod', 'Progressive Sword', 'Hookshot']],
|
||||
|
||||
["Misery Mire - Map Chest", False, []],
|
||||
["Misery Mire - Map Chest", False, [], ['Small Key (Misery Mire)', 'Big Key (Misery Mire)']],
|
||||
["Misery Mire - Map Chest", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Map Chest", True, ['Small Key (Misery Mire)', 'Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Map Chest", True, ['Small Key (Misery Mire)', 'Progressive Sword', 'Hookshot']],
|
||||
["Misery Mire - Map Chest", True, ['Big Key (Misery Mire)', 'Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Map Chest", True, ['Big Key (Misery Mire)', 'Progressive Sword', 'Hookshot']],
|
||||
|
||||
["Misery Mire - Spike Chest", False, []],
|
||||
["Misery Mire - Spike Chest", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Spike Chest", True, ['Progressive Sword', 'Pegasus Boots', 'Cape']],
|
||||
["Misery Mire - Spike Chest", True, ['Progressive Sword', 'Hookshot', 'Cape']],
|
||||
["Misery Mire - Spike Chest", True, ['Progressive Sword', 'Pegasus Boots', 'Cane of Byrna']],
|
||||
["Misery Mire - Spike Chest", True, ['Progressive Sword', 'Hookshot', 'Cane of Byrna']],
|
||||
["Misery Mire - Spike Chest", True, ['Progressive Sword', 'Pegasus Boots', 'Boss Heart Container']],
|
||||
["Misery Mire - Spike Chest", True, ['Progressive Sword', 'Hookshot', 'Boss Heart Container']],
|
||||
|
||||
["Misery Mire - Boss", False, []],
|
||||
["Misery Mire - Boss", False, [], ['Lamp']],
|
||||
["Misery Mire - Boss", False, [], ['Cane of Somaria']],
|
||||
["Misery Mire - Boss", False, [], ['Progressive Sword', 'Hammer', 'Progressive Bow']],
|
||||
["Misery Mire - Boss", False, [], ['Big Key (Misery Mire)']],
|
||||
["Misery Mire - Boss", False, [], ['Pegasus Boots', 'Hookshot']],
|
||||
["Misery Mire - Boss", True, ['Big Key (Misery Mire)', 'Lamp', 'Cane of Somaria', 'Progressive Sword', 'Pegasus Boots']],
|
||||
["Misery Mire - Boss", True, ['Big Key (Misery Mire)', 'Lamp', 'Cane of Somaria', 'Hammer', 'Pegasus Boots']],
|
||||
["Misery Mire - Boss", True, ['Big Key (Misery Mire)', 'Lamp', 'Cane of Somaria', 'Progressive Bow', 'Pegasus Boots']],
|
||||
])
|
||||
99
worlds/alttp/test/dungeons/TestSkullWoods.py
Normal file
99
worlds/alttp/test/dungeons/TestSkullWoods.py
Normal file
@@ -0,0 +1,99 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestSkullWoods(TestDungeon):
|
||||
|
||||
def testSkullWoodsFrontAllEntrances(self):
|
||||
self.starting_regions = ['Skull Woods First Section', 'Skull Woods First Section (Left)', 'Skull Woods First Section (Top)']
|
||||
self.run_tests([
|
||||
["Skull Woods - Big Chest", False, []],
|
||||
["Skull Woods - Big Chest", False, [], ['Big Key (Skull Woods)']],
|
||||
["Skull Woods - Big Chest", True, ['Big Key (Skull Woods)']],
|
||||
|
||||
["Skull Woods - Compass Chest", True, []],
|
||||
|
||||
["Skull Woods - Map Chest", True, []],
|
||||
|
||||
["Skull Woods - Pot Prison", True, []],
|
||||
|
||||
["Skull Woods - Pinball Room", True, []]
|
||||
])
|
||||
|
||||
def testSkullWoodsFrontOnly(self):
|
||||
self.starting_regions = ['Skull Woods First Section']
|
||||
self.run_tests([
|
||||
["Skull Woods - Big Chest", False, []],
|
||||
["Skull Woods - Big Chest", False, [], ['Never in logic']],
|
||||
|
||||
["Skull Woods - Compass Chest", False, []],
|
||||
["Skull Woods - Compass Chest", False, ['Small Key (Skull Woods)'], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Compass Chest", True, ['Small Key (Skull Woods)', 'Small Key (Skull Woods)']],
|
||||
|
||||
["Skull Woods - Map Chest", True, []],
|
||||
|
||||
["Skull Woods - Pot Prison", False, []],
|
||||
["Skull Woods - Pot Prison", False, ['Small Key (Skull Woods)'], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Pot Prison", True, ['Small Key (Skull Woods)', 'Small Key (Skull Woods)']],
|
||||
|
||||
["Skull Woods - Pinball Room", False, []],
|
||||
["Skull Woods - Pinball Room", False, [], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Pinball Room", True, ['Small Key (Skull Woods)']]
|
||||
])
|
||||
|
||||
def testSkullWoodsLeftOnly(self):
|
||||
self.starting_regions = ['Skull Woods First Section (Left)']
|
||||
self.remove_exits = ['Skull Woods First Section Exit']
|
||||
self.run_tests([
|
||||
["Skull Woods - Big Chest", False, []],
|
||||
["Skull Woods - Big Chest", False, [], ['Never in logic']],
|
||||
|
||||
["Skull Woods - Compass Chest", True, []],
|
||||
|
||||
["Skull Woods - Map Chest", False, []],
|
||||
["Skull Woods - Map Chest", False, [], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Map Chest", True, ['Small Key (Skull Woods)']],
|
||||
|
||||
["Skull Woods - Pot Prison", True, []],
|
||||
|
||||
["Skull Woods - Pinball Room", True, []]
|
||||
])
|
||||
|
||||
def testSkullWoodsBackOnly(self):
|
||||
self.starting_regions = ['Skull Woods First Section (Top)']
|
||||
self.remove_exits = ['Skull Woods First Section Exit']
|
||||
self.run_tests([
|
||||
["Skull Woods - Big Chest", False, []],
|
||||
["Skull Woods - Big Chest", False, [], ['Big Key (Skull Woods)']],
|
||||
["Skull Woods - Big Chest", True, ['Big Key (Skull Woods)']],
|
||||
|
||||
["Skull Woods - Compass Chest", False, []],
|
||||
["Skull Woods - Compass Chest", False, ['Small Key (Skull Woods)'], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Compass Chest", True, ['Small Key (Skull Woods)', 'Small Key (Skull Woods)']],
|
||||
|
||||
["Skull Woods - Map Chest", True, []],
|
||||
|
||||
["Skull Woods - Pot Prison", False, []],
|
||||
["Skull Woods - Pot Prison", False, ['Small Key (Skull Woods)'], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Pot Prison", True, ['Small Key (Skull Woods)', 'Small Key (Skull Woods)']],
|
||||
|
||||
["Skull Woods - Pinball Room", False, []],
|
||||
["Skull Woods - Pinball Room", False, [], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Pinball Room", True, ['Small Key (Skull Woods)']]
|
||||
])
|
||||
|
||||
def testSkullWoodsMiddle(self):
|
||||
self.starting_regions = ['Skull Woods Second Section']
|
||||
self.remove_exits = ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']
|
||||
self.run_tests([["Skull Woods - Big Key Chest", True, []]])
|
||||
|
||||
def testSkullWoodsBack(self):
|
||||
self.starting_regions = ['Skull Woods Final Section (Entrance)']
|
||||
self.run_tests([
|
||||
["Skull Woods - Bridge Room", True, []],
|
||||
|
||||
["Skull Woods - Boss", False, []],
|
||||
["Skull Woods - Boss", False, [], ['Fire Rod']],
|
||||
["Skull Woods - Boss", False, [], ['Progressive Sword']],
|
||||
["Skull Woods - Boss", False, ['Small Key (Skull Woods)', 'Small Key (Skull Woods)'], ['Small Key (Skull Woods)']],
|
||||
["Skull Woods - Boss", True, ['Small Key (Skull Woods)', 'Small Key (Skull Woods)', 'Small Key (Skull Woods)', 'Fire Rod', 'Progressive Sword']],
|
||||
])
|
||||
80
worlds/alttp/test/dungeons/TestSwampPalace.py
Normal file
80
worlds/alttp/test/dungeons/TestSwampPalace.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestSwampPalace(TestDungeon):
|
||||
|
||||
def testSwampPalace(self):
|
||||
self.starting_regions = ['Swamp Palace (Entrance)']
|
||||
self.run_tests([
|
||||
["Swamp Palace - Entrance", False, []],
|
||||
["Swamp Palace - Entrance", False, [], ['Flippers']],
|
||||
["Swamp Palace - Entrance", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Entrance", True, ['Open Floodgate', 'Flippers']],
|
||||
|
||||
["Swamp Palace - Big Chest", False, []],
|
||||
["Swamp Palace - Big Chest", False, [], ['Flippers']],
|
||||
["Swamp Palace - Big Chest", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Big Chest", False, [], ['Hammer']],
|
||||
["Swamp Palace - Big Chest", False, [], ['Big Key (Swamp Palace)']],
|
||||
["Swamp Palace - Big Chest", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Big Chest", True, ['Open Floodgate', 'Big Key (Swamp Palace)', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer']],
|
||||
|
||||
["Swamp Palace - Big Key Chest", False, []],
|
||||
["Swamp Palace - Big Key Chest", False, [], ['Flippers']],
|
||||
["Swamp Palace - Big Key Chest", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Big Key Chest", False, [], ['Hammer']],
|
||||
["Swamp Palace - Big Key Chest", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Big Key Chest", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer']],
|
||||
|
||||
["Swamp Palace - Map Chest", False, []],
|
||||
["Swamp Palace - Map Chest", False, [], ['Flippers']],
|
||||
["Swamp Palace - Map Chest", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Map Chest", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Map Chest", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers']],
|
||||
|
||||
["Swamp Palace - West Chest", False, []],
|
||||
["Swamp Palace - West Chest", False, [], ['Flippers']],
|
||||
["Swamp Palace - West Chest", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - West Chest", False, [], ['Hammer']],
|
||||
["Swamp Palace - West Chest", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - West Chest", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer']],
|
||||
|
||||
["Swamp Palace - Compass Chest", False, []],
|
||||
["Swamp Palace - Compass Chest", False, [], ['Flippers']],
|
||||
["Swamp Palace - Compass Chest", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Compass Chest", False, [], ['Hammer']],
|
||||
["Swamp Palace - Compass Chest", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Compass Chest", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer']],
|
||||
|
||||
["Swamp Palace - Flooded Room - Left", False, []],
|
||||
["Swamp Palace - Flooded Room - Left", False, [], ['Flippers']],
|
||||
["Swamp Palace - Flooded Room - Left", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Flooded Room - Left", False, [], ['Hammer']],
|
||||
["Swamp Palace - Flooded Room - Left", False, [], ['Hookshot']],
|
||||
["Swamp Palace - Flooded Room - Left", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Flooded Room - Left", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer', 'Hookshot']],
|
||||
|
||||
["Swamp Palace - Flooded Room - Right", False, []],
|
||||
["Swamp Palace - Flooded Room - Right", False, [], ['Flippers']],
|
||||
["Swamp Palace - Flooded Room - Right", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Flooded Room - Right", False, [], ['Hammer']],
|
||||
["Swamp Palace - Flooded Room - Right", False, [], ['Hookshot']],
|
||||
["Swamp Palace - Flooded Room - Right", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Flooded Room - Right", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer', 'Hookshot']],
|
||||
|
||||
["Swamp Palace - Waterfall Room", False, []],
|
||||
["Swamp Palace - Waterfall Room", False, [], ['Flippers']],
|
||||
["Swamp Palace - Waterfall Room", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Waterfall Room", False, [], ['Hammer']],
|
||||
["Swamp Palace - Waterfall Room", False, [], ['Hookshot']],
|
||||
["Swamp Palace - Waterfall Room", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Waterfall Room", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer', 'Hookshot']],
|
||||
|
||||
["Swamp Palace - Boss", False, []],
|
||||
["Swamp Palace - Boss", False, [], ['Flippers']],
|
||||
["Swamp Palace - Boss", False, [], ['Open Floodgate']],
|
||||
["Swamp Palace - Boss", False, [], ['Hammer']],
|
||||
["Swamp Palace - Boss", False, [], ['Hookshot']],
|
||||
["Swamp Palace - Boss", False, [], ['Small Key (Swamp Palace)']],
|
||||
["Swamp Palace - Boss", True, ['Open Floodgate', 'Small Key (Swamp Palace)', 'Flippers', 'Hammer', 'Hookshot']],
|
||||
])
|
||||
40
worlds/alttp/test/dungeons/TestThievesTown.py
Normal file
40
worlds/alttp/test/dungeons/TestThievesTown.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestThievesTown(TestDungeon):
|
||||
|
||||
def testThievesTown(self):
|
||||
self.starting_regions = ['Thieves Town (Entrance)']
|
||||
self.run_tests([
|
||||
["Thieves' Town - Attic", False, []],
|
||||
["Thieves' Town - Attic", False, [], ['Big Key (Thieves Town)']],
|
||||
["Thieves' Town - Attic", False, [], ['Small Key (Thieves Town)']],
|
||||
["Thieves' Town - Attic", True, ['Big Key (Thieves Town)', 'Small Key (Thieves Town)']],
|
||||
|
||||
["Thieves' Town - Big Key Chest", True, []],
|
||||
|
||||
["Thieves' Town - Map Chest", True, []],
|
||||
|
||||
["Thieves' Town - Compass Chest", True, []],
|
||||
|
||||
["Thieves' Town - Ambush Chest", True, []],
|
||||
|
||||
["Thieves' Town - Big Chest", False, []],
|
||||
["Thieves' Town - Big Chest", False, [], ['Big Key (Thieves Town)']],
|
||||
["Thieves' Town - Big Chest", False, [], ['Small Key (Thieves Town)']],
|
||||
["Thieves' Town - Big Chest", False, [], ['Hammer']],
|
||||
["Thieves' Town - Big Chest", True, ['Hammer', 'Small Key (Thieves Town)', 'Big Key (Thieves Town)']],
|
||||
|
||||
["Thieves' Town - Blind's Cell", False, []],
|
||||
["Thieves' Town - Blind's Cell", False, [], ['Big Key (Thieves Town)']],
|
||||
["Thieves' Town - Blind's Cell", True, ['Big Key (Thieves Town)']],
|
||||
|
||||
["Thieves' Town - Boss", False, []],
|
||||
["Thieves' Town - Boss", False, [], ['Big Key (Thieves Town)']],
|
||||
["Thieves' Town - Boss", False, [], ['Small Key (Thieves Town)']],
|
||||
["Thieves' Town - Boss", False, [], ['Hammer', 'Progressive Sword', 'Cane of Somaria', 'Cane of Byrna']],
|
||||
["Thieves' Town - Boss", True, ['Small Key (Thieves Town)', 'Big Key (Thieves Town)', 'Hammer']],
|
||||
["Thieves' Town - Boss", True, ['Small Key (Thieves Town)', 'Big Key (Thieves Town)', 'Progressive Sword']],
|
||||
["Thieves' Town - Boss", True, ['Small Key (Thieves Town)', 'Big Key (Thieves Town)', 'Cane of Somaria']],
|
||||
["Thieves' Town - Boss", True, ['Small Key (Thieves Town)', 'Big Key (Thieves Town)', 'Cane of Byrna']],
|
||||
])
|
||||
32
worlds/alttp/test/dungeons/TestTowerOfHera.py
Normal file
32
worlds/alttp/test/dungeons/TestTowerOfHera.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from .TestDungeon import TestDungeon
|
||||
|
||||
|
||||
class TestTowerOfHera(TestDungeon):
|
||||
|
||||
def testTowerOfHera(self):
|
||||
self.starting_regions = ['Tower of Hera (Bottom)']
|
||||
self.run_tests([
|
||||
["Tower of Hera - Big Key Chest", False, []],
|
||||
["Tower of Hera - Big Key Chest", False, [], ['Small Key (Tower of Hera)']],
|
||||
["Tower of Hera - Big Key Chest", False, [], ['Lamp', 'Fire Rod']],
|
||||
["Tower of Hera - Big Key Chest", True, ['Small Key (Tower of Hera)', 'Lamp']],
|
||||
["Tower of Hera - Big Key Chest", True, ['Small Key (Tower of Hera)', 'Fire Rod']],
|
||||
|
||||
["Tower of Hera - Basement Cage", True, []],
|
||||
|
||||
["Tower of Hera - Map Chest", True, []],
|
||||
|
||||
["Tower of Hera - Compass Chest", False, []],
|
||||
["Tower of Hera - Compass Chest", False, [], ['Big Key (Tower of Hera)']],
|
||||
["Tower of Hera - Compass Chest", True, ['Big Key (Tower of Hera)']],
|
||||
|
||||
["Tower of Hera - Big Chest", False, []],
|
||||
["Tower of Hera - Big Chest", False, [], ['Big Key (Tower of Hera)']],
|
||||
["Tower of Hera - Big Chest", True, ['Big Key (Tower of Hera)']],
|
||||
|
||||
["Tower of Hera - Boss", False, []],
|
||||
["Tower of Hera - Boss", False, [], ['Big Key (Tower of Hera)']],
|
||||
["Tower of Hera - Boss", False, [], ['Progressive Sword', 'Hammer']],
|
||||
["Tower of Hera - Boss", True, ['Progressive Sword', 'Big Key (Tower of Hera)']],
|
||||
["Tower of Hera - Boss", True, ['Hammer', 'Big Key (Tower of Hera)']],
|
||||
])
|
||||
0
worlds/alttp/test/dungeons/__init__.py
Normal file
0
worlds/alttp/test/dungeons/__init__.py
Normal file
Reference in New Issue
Block a user