From 82449763b7685d68eef7123a0ca0a24ad49cd823 Mon Sep 17 00:00:00 2001 From: compiling <8335770+compiling@users.noreply.github.com> Date: Fri, 30 Oct 2020 16:21:13 +1100 Subject: [PATCH] Add OWG tests --- InvertedRegions.py | 2 +- test/TestBase.py | 50 ++++ test/inverted/TestInverted.py | 4 +- test/inverted/TestInvertedDarkWorld.py | 8 +- test/inverted/TestInvertedDeathMountain.py | 8 +- test/inverted/TestInvertedEntrances.py | 118 ++++++++ test/inverted/TestInvertedLightWorld.py | 10 +- test/inverted/TestInvertedTurtleRock.py | 2 +- test/inverted_owg/TestDarkWorld.py | 78 ++++++ test/inverted_owg/TestDeathMountain.py | 113 ++++++++ test/inverted_owg/TestDungeons.py | 115 ++++++++ test/inverted_owg/TestInvertedOWG.py | 30 ++ test/inverted_owg/TestLightWorld.py | 312 +++++++++++++++++++++ test/inverted_owg/__init__.py | 0 test/owg/TestDarkWorld.py | 206 ++++++++++++++ test/owg/TestDeathMountain.py | 201 +++++++++++++ test/owg/TestDungeons.py | 132 +++++++++ test/owg/TestLightWorld.py | 194 +++++++++++++ test/owg/TestVanillaOWG.py | 29 ++ test/owg/__init__.py | 0 test/vanilla/TestDarkWorld.py | 166 +++++++++++ test/vanilla/TestDeathMountain.py | 230 +++++++++++++++ test/vanilla/TestEntrances.py | 133 +++++++++ test/vanilla/TestLightWorld.py | 197 +++++++++++++ test/vanilla/TestVanilla.py | 27 ++ test/vanilla/__init__.py | 0 26 files changed, 2348 insertions(+), 17 deletions(-) create mode 100644 test/TestBase.py create mode 100644 test/inverted/TestInvertedEntrances.py create mode 100644 test/inverted_owg/TestDarkWorld.py create mode 100644 test/inverted_owg/TestDeathMountain.py create mode 100644 test/inverted_owg/TestDungeons.py create mode 100644 test/inverted_owg/TestInvertedOWG.py create mode 100644 test/inverted_owg/TestLightWorld.py create mode 100644 test/inverted_owg/__init__.py create mode 100644 test/owg/TestDarkWorld.py create mode 100644 test/owg/TestDeathMountain.py create mode 100644 test/owg/TestDungeons.py create mode 100644 test/owg/TestLightWorld.py create mode 100644 test/owg/TestVanillaOWG.py create mode 100644 test/owg/__init__.py create mode 100644 test/vanilla/TestDarkWorld.py create mode 100644 test/vanilla/TestDeathMountain.py create mode 100644 test/vanilla/TestEntrances.py create mode 100644 test/vanilla/TestLightWorld.py create mode 100644 test/vanilla/TestVanilla.py create mode 100644 test/vanilla/__init__.py diff --git a/InvertedRegions.py b/InvertedRegions.py index 7e0906a3..ddb05fe5 100644 --- a/InvertedRegions.py +++ b/InvertedRegions.py @@ -29,7 +29,7 @@ def create_inverted_regions(world, player): "Blind\'s Hideout - Right", "Blind\'s Hideout - Far Left", "Blind\'s Hideout - Far Right"]), - create_lw_region(player, 'Northeast Light World', None, ['Zoras River', 'Waterfall of Wishing', 'Potion Shop Outer Rock', 'Northeast Dark World Mirror Spot', 'Northeast Light World Warp']), + create_lw_region(player, 'Northeast Light World', None, ['Zoras River', 'Waterfall of Wishing', 'Potion Shop Outer Rock', 'Catfish Mirror Spot', 'Northeast Light World Warp']), create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Potion Shop Inner Bushes', 'Potion Shop Inner Rock', 'Potion Shop Mirror Spot', 'Potion Shop River Drop']), create_lw_region(player, 'Graveyard Cave Area', None, ['Graveyard Cave', 'Graveyard Cave Inner Bushes', 'Graveyard Cave Mirror Spot']), create_lw_region(player, 'River', None, ['Light World Pier', 'Potion Shop Pier']), diff --git a/test/TestBase.py b/test/TestBase.py new file mode 100644 index 00000000..df5c981f --- /dev/null +++ b/test/TestBase.py @@ -0,0 +1,50 @@ +import unittest + +from BaseClasses import CollectionState +from Items import ItemFactory + + +class TestBase(unittest.TestCase): + + _state_cache = {} + + def get_state(self, items): + if (self.world, tuple(items)) in self._state_cache: + return self._state_cache[self.world, tuple(items)] + state = CollectionState(self.world) + for item in items: + item.advancement = True + state.collect(item) + state.sweep_for_events() + self._state_cache[self.world, tuple(items)] = state + return state + + def run_location_tests(self, access_pool): + 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.world.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 = self.get_state(items) + + self.assertEqual(self.world.get_location(location, 1).can_reach(state), access) + + def run_entrance_tests(self, access_pool): + for entrance, 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(entrance=entrance, access=access, items=items, all_except=all_except): + if all_except and len(all_except) > 0: + items = self.world.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 = self.get_state(items) + + self.assertEqual(self.world.get_entrance(entrance, 1).can_reach(state), access) \ No newline at end of file diff --git a/test/inverted/TestInverted.py b/test/inverted/TestInverted.py index 82e1c0f0..b1707547 100644 --- a/test/inverted/TestInverted.py +++ b/test/inverted/TestInverted.py @@ -6,10 +6,10 @@ from ItemList import generate_itempool, difficulties from Items import ItemFactory from Regions import mark_light_world_regions from Rules import set_rules -from test.TestVanilla import TestVanilla +from test.TestBase import TestBase -class TestInverted(TestVanilla): +class TestInverted(TestBase): def setUp(self): self.world = World(1, 'vanilla', 'noglitches', 'inverted', 'random', 'normal', 'normal', 'none', 'on', 'ganon', 'balanced', True, False, False, False, False, False, False, False, False, None, diff --git a/test/inverted/TestInvertedDarkWorld.py b/test/inverted/TestInvertedDarkWorld.py index c2249c7e..58a4c8b1 100644 --- a/test/inverted/TestInvertedDarkWorld.py +++ b/test/inverted/TestInvertedDarkWorld.py @@ -4,7 +4,7 @@ from test.inverted.TestInverted import TestInverted class TestInvertedDeathMountain(TestInverted): def testNorthWest(self): - self.run_tests([ + self.run_location_tests([ ["Brewery", True, []], ["C-Shaped House", True, []], @@ -45,7 +45,7 @@ class TestInvertedDeathMountain(TestInverted): ]) def testNorthEast(self): - self.run_tests([ + self.run_location_tests([ ["Catfish", False, []], ["Catfish", False, [], ['Progressive Glove', 'Flippers']], ["Catfish", False, [], ['Progressive Glove', 'Magic Mirror']], @@ -80,7 +80,7 @@ class TestInvertedDeathMountain(TestInverted): ]) def testSouth(self): - self.run_tests([ + self.run_location_tests([ ["Hype Cave - Top", True, []], ["Hype Cave - Middle Right", True, []], @@ -99,7 +99,7 @@ class TestInvertedDeathMountain(TestInverted): ]) def testMireArea(self): - self.run_tests([ + self.run_location_tests([ ["Mire Shed - Left", False, []], ["Mire Shed - Left", False, [], ['Ocarina', 'Magic Mirror']], ["Mire Shed - Left", True, ['Moon Pearl', 'Ocarina', 'Progressive Glove', 'Progressive Glove']], diff --git a/test/inverted/TestInvertedDeathMountain.py b/test/inverted/TestInvertedDeathMountain.py index fbd75ddd..8c330d3c 100644 --- a/test/inverted/TestInvertedDeathMountain.py +++ b/test/inverted/TestInvertedDeathMountain.py @@ -4,7 +4,7 @@ from test.inverted.TestInverted import TestInverted class TestInvertedDeathMountain(TestInverted): def testWestDeathMountain(self): - self.run_tests([ + self.run_location_tests([ ["Old Man", False, []], ["Old Man", False, [], ['Progressive Glove', 'Ocarina']], ["Old Man", False, [], ['Lamp']], @@ -23,7 +23,7 @@ class TestInvertedDeathMountain(TestInverted): ]) def testEastDeathMountain(self): - self.run_tests([ + self.run_location_tests([ ["Spiral Cave", False, []], ["Spiral Cave", False, [], ['Moon Pearl']], ["Spiral Cave", False, [], ['Progressive Glove', 'Ocarina']], @@ -158,7 +158,7 @@ class TestInvertedDeathMountain(TestInverted): ]) def testEastDarkWorldDeathMountain(self): - self.run_tests([ + self.run_location_tests([ ["Superbunny Cave - Top", False, []], ["Superbunny Cave - Top", False, [], ['Progressive Glove', 'Ocarina']], ["Superbunny Cave - Top", True, ['Progressive Glove', 'Lamp']], @@ -204,7 +204,7 @@ class TestInvertedDeathMountain(TestInverted): ]) def testWestDarkWorldDeathMountain(self): - self.run_tests([ + self.run_location_tests([ ["Spike Cave", False, []], ["Spike Cave", False, [], ['Progressive Glove']], ["Spike Cave", False, [], ['Hammer']], diff --git a/test/inverted/TestInvertedEntrances.py b/test/inverted/TestInvertedEntrances.py new file mode 100644 index 00000000..89b3e000 --- /dev/null +++ b/test/inverted/TestInvertedEntrances.py @@ -0,0 +1,118 @@ +from test.inverted.TestInverted import TestInverted + + +class TestEntrances(TestInverted): + + def testDungeonEntrances(self): + self.run_entrance_tests([ + ["Hyrule Castle Entrance (South)", False, []], + ["Hyrule Castle Entrance (South)", False, [], ["Beat Agahnim 1", "Moon Pearl"]], + ["Hyrule Castle Entrance (South)", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Hyrule Castle Entrance (South)", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Hyrule Castle Entrance (South)", True, ["Beat Agahnim 1"]], + ["Hyrule Castle Entrance (South)", True, ["Moon Pearl", "Hammer", "Progressive Glove"]], + ["Hyrule Castle Entrance (South)", True, ["Moon Pearl", "Progressive Glove", "Progressive Glove"]], + + ["Eastern Palace", False, []], + ["Eastern Palace", False, [], ["Beat Agahnim 1", "Moon Pearl"]], + ["Eastern Palace", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Eastern Palace", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Eastern Palace", True, ["Beat Agahnim 1"]], + ["Eastern Palace", True, ["Moon Pearl", "Hammer", "Progressive Glove"]], + ["Eastern Palace", True, ["Moon Pearl", "Progressive Glove", "Progressive Glove"]], + + ["Desert Palace Entrance (South)", False, []], + ["Desert Palace Entrance (South)", False, [], ["Book of Mudora"]], + ["Desert Palace Entrance (South)", False, [], ["Beat Agahnim 1", "Moon Pearl"]], + ["Desert Palace Entrance (South)", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Desert Palace Entrance (South)", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Desert Palace Entrance (South)", True, ["Book of Mudora", "Beat Agahnim 1"]], + ["Desert Palace Entrance (South)", True, ["Book of Mudora", "Moon Pearl", "Hammer", "Progressive Glove"]], + ["Desert Palace Entrance (South)", True, ["Book of Mudora", "Moon Pearl", "Progressive Glove", "Progressive Glove"]], + ["Desert Palace Entrance (North)", False, []], + ["Desert Palace Entrance (North)", False, [], ["Book of Mudora"]], + ["Desert Palace Entrance (North)", False, [], ["Progressive Glove"]], + ["Desert Palace Entrance (North)", False, [], ["Moon Pearl"]], + ["Desert Palace Entrance (North)", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Desert Palace Entrance (North)", True, ["Moon Pearl", "Book of Mudora", "Progressive Glove", "Hammer"]], + ["Desert Palace Entrance (North)", True, ["Moon Pearl", "Book of Mudora", "Progressive Glove", "Progressive Glove"]], + ["Desert Palace Entrance (North)", True, ["Moon Pearl", "Book of Mudora", "Progressive Glove", "Beat Agahnim 1"]], + + ["Tower of Hera", False, []], + ["Tower of Hera", False, [], ["Moon Pearl"]], + ["Tower of Hera", False, [], ["Hammer"]], + ["Tower of Hera", False, ["Progressive Glove"], ["Hookshot", "Progressive Glove"]], + ["Tower of Hera", False, [], ["Ocarina", "Lamp"]], + ["Tower of Hera", False, [], ["Ocarina", "Progressive Glove"]], + ["Tower of Hera", True, ["Moon Pearl", "Hammer", "Progressive Glove", "Progressive Glove", "Lamp"]], + ["Tower of Hera", True, ["Moon Pearl", "Hammer", "Hookshot", "Progressive Glove", "Lamp"]], + ["Tower of Hera", True, ["Moon Pearl", "Hammer", "Hookshot", "Progressive Glove", "Ocarina"]], + ["Tower of Hera", True, ["Moon Pearl", "Hammer", "Beat Agahnim 1", "Ocarina", "Hookshot"]], + + ["Inverted Agahnims Tower", False, []], + ["Inverted Agahnims Tower", False, [], ["Ocarina", "Lamp"]], + ["Inverted Agahnims Tower", False, [], ["Ocarina", "Progressive Glove"]], + ["Inverted Agahnims Tower", False, [], ["Moon Pearl", "Lamp"]], + ["Inverted Agahnims Tower", False, [], ["Moon Pearl", "Progressive Glove"]], + ["Inverted Agahnims Tower", True, ["Lamp", "Progressive Glove"]], + ["Inverted Agahnims Tower", True, ["Ocarina", "Beat Agahnim 1", "Moon Pearl"]], + ["Inverted Agahnims Tower", True, ["Ocarina", "Progressive Glove", "Progressive Glove", "Moon Pearl"]], + ["Inverted Agahnims Tower", True, ["Ocarina", "Progressive Glove", "Hammer", "Moon Pearl"]], + + ["Palace of Darkness", False, []], + ["Palace of Darkness", False, [], ["Hammer", "Flippers", "Magic Mirror", "Ocarina"]], + ["Palace of Darkness", True, ["Hammer"]], + ["Palace of Darkness", True, ["Flippers"]], + ["Palace of Darkness", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Ocarina"]], + ["Palace of Darkness", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Magic Mirror"]], + ["Palace of Darkness", True, ["Beat Agahnim 1", "Moon Pearl", "Ocarina"]], + ["Palace of Darkness", True, ["Beat Agahnim 1", "Moon Pearl", "Magic Mirror"]], + + ["Swamp Palace", True, []], + + ["Thieves Town", True, []], + + ["Skull Woods First Section Door", True, []], + + ["Skull Woods Final Section", False, []], + ["Skull Woods Final Section", False, [], ["Fire Rod"]], + ["Skull Woods Final Section", True, ["Fire Rod"]], + + ["Ice Palace", False, []], + ["Ice Palace", False, [], ["Flippers"]], + ["Ice Palace", True, ["Flippers"]], + + ["Misery Mire", False, []], + ["Misery Mire", False, [], ["Ocarina", "Magic Mirror"]], + ["Misery Mire", False, [], ["Moon Pearl", "Magic Mirror"]], + ["Misery Mire", False, [], ["Ether"]], + ["Misery Mire", False, [], ["Progressive Sword"]], + ["Misery Mire", True, ["Progressive Sword", "Ether", "Beat Agahnim 1", "Magic Mirror"]], + ["Misery Mire", True, ["Progressive Sword", "Ether", "Beat Agahnim 1", "Moon Pearl", "Ocarina"]], + ["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Hammer", "Progressive Glove", "Magic Mirror"]], + ["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Hammer", "Progressive Glove", "Ocarina"]], + ["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Progressive Glove", "Progressive Glove", "Magic Mirror"]], + ["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Progressive Glove", "Progressive Glove", "Ocarina"]], + + ["Turtle Rock", False, []], + ["Turtle Rock", False, [], ["Quake"]], + ["Turtle Rock", False, [], ["Progressive Sword"]], + ["Turtle Rock", False, [], ["Lamp", "Ocarina"]], + ["Turtle Rock", False, [], ["Progressive Glove", "Ocarina"]], + ["Turtle Rock", True, ["Quake", "Progressive Sword", "Progressive Glove", "Lamp"]], + ["Turtle Rock", True, ["Quake", "Progressive Sword", "Progressive Glove", "Progressive Glove", "Moon Pearl", "Ocarina"]], + ["Turtle Rock", True, ["Quake", "Progressive Sword", "Progressive Glove", "Hammer", "Moon Pearl", "Ocarina"]], + ["Turtle Rock", True, ["Quake", "Progressive Sword", "Beat Agahnim 1", "Moon Pearl", "Ocarina"]], + + ["Inverted Ganons Tower", False, []], + ["Inverted Ganons Tower", False, [], ["Crystal 1"]], + ["Inverted Ganons Tower", False, [], ["Crystal 2"]], + ["Inverted Ganons Tower", False, [], ["Crystal 3"]], + ["Inverted Ganons Tower", False, [], ["Crystal 4"]], + ["Inverted Ganons Tower", False, [], ["Crystal 5"]], + ["Inverted Ganons Tower", False, [], ["Crystal 6"]], + ["Inverted Ganons Tower", False, [], ["Crystal 7"]], + ["Inverted Ganons Tower", True, ["Beat Agahnim 1", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]], + ["Inverted Ganons Tower", True, ["Moon Pearl", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]], + ["Inverted Ganons Tower", True, ["Moon Pearl", "Hammer", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]], + ]) \ No newline at end of file diff --git a/test/inverted/TestInvertedLightWorld.py b/test/inverted/TestInvertedLightWorld.py index 6a1e5baf..014ccb66 100644 --- a/test/inverted/TestInvertedLightWorld.py +++ b/test/inverted/TestInvertedLightWorld.py @@ -6,7 +6,7 @@ class TestInvertedLightWorld(TestInverted): super().setUp() def testLostWoods(self): - self.run_tests([ + self.run_location_tests([ ["Master Sword Pedestal", False, []], ["Master Sword Pedestal", False, [], ['Green Pendant']], ["Master Sword Pedestal", False, [], ['Red Pendant']], @@ -37,7 +37,7 @@ class TestInvertedLightWorld(TestInverted): ]) def testKakariko(self): - self.run_tests([ + self.run_location_tests([ ["Kakariko Tavern", False, []], ["Kakariko Tavern", False, [], ['Moon Pearl']], ["Kakariko Tavern", True, ['Moon Pearl', 'Beat Agahnim 1']], @@ -171,7 +171,7 @@ class TestInvertedLightWorld(TestInverted): ]) def testSouthLightWorld(self): - self.run_tests([ + self.run_location_tests([ ["Desert Ledge", False, []], ["Desert Ledge", False, [], ['Book of Mudora']], ["Desert Ledge", False, [], ['Moon Pearl']], @@ -251,7 +251,7 @@ class TestInvertedLightWorld(TestInverted): ]) def testZoraArea(self): - self.run_tests([ + self.run_location_tests([ ["King Zora", False, []], ["King Zora", False, [], ['Progressive Glove', 'Flippers']], ["King Zora", False, [], ['Moon Pearl']], @@ -284,7 +284,7 @@ class TestInvertedLightWorld(TestInverted): ]) def testLightWorld(self): - self.run_tests([ + self.run_location_tests([ ["Link's Uncle", False, []], ["Link's Uncle", False, [], ['Moon Pearl']], ["Link's Uncle", True, ['Moon Pearl', 'Beat Agahnim 1']], diff --git a/test/inverted/TestInvertedTurtleRock.py b/test/inverted/TestInvertedTurtleRock.py index 7975abeb..4e9b4c32 100644 --- a/test/inverted/TestInvertedTurtleRock.py +++ b/test/inverted/TestInvertedTurtleRock.py @@ -4,7 +4,7 @@ from test.inverted.TestInverted import TestInverted class TestInvertedTurtleRock(TestInverted): def testTurtleRock(self): - self.run_tests([ + self.run_location_tests([ ["Turtle Rock - Compass Chest", False, []], ["Turtle Rock - Compass Chest", False, [], ['Cane of Somaria']], ["Turtle Rock - Compass Chest", False, [], ['Quake', 'Magic Mirror']], diff --git a/test/inverted_owg/TestDarkWorld.py b/test/inverted_owg/TestDarkWorld.py new file mode 100644 index 00000000..89dff120 --- /dev/null +++ b/test/inverted_owg/TestDarkWorld.py @@ -0,0 +1,78 @@ +from test.inverted_owg.TestInvertedOWG import TestInvertedOWG + + +class TestDarkWorld(TestInvertedOWG): + + def testSouthDarkWorld(self): + self.run_location_tests([ + ["Hype Cave - Top", True, []], + + ["Hype Cave - Middle Right", True, []], + + ["Hype Cave - Middle Left", True, []], + + ["Hype Cave - Bottom", True, []], + + ["Hype Cave - Generous Guy", True, []], + + ["Stumpy", True, []], + + ["Digging Game", True, []], + ]) + + def testWestDarkWorld(self): + self.run_location_tests([ + ["Brewery", True, []], + + ["C-Shaped House", True, []], + + ["Chest Game", True, []], + + ["Peg Cave", False, []], + ["Peg Cave", False, [], ['Hammer']], + ["Peg Cave", True, ['Hammer', 'Pegasus Boots']], + + ["Bumper Cave Ledge", False, []], + ["Bumper Cave Ledge", True, ['Pegasus Boots']], + + ["Blacksmith", False, []], + ["Blacksmith", True, ['Magic Mirror', 'Pegasus Boots']], + ["Blacksmith", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots', 'Moon Pearl']], + + ["Purple Chest", False, []], + ["Purple Chest", True, ['Magic Mirror', 'Pegasus Boots']], + ["Purple Chest", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots', 'Moon Pearl']], + ]) + + def testEastDarkWorld(self): + self.run_location_tests([ + ["Catfish", False, []], + ["Catfish", True, ['Pegasus Boots']], + + #todo: Qirn Jump + #["Pyramid", True, []], + ["Pyramid", False, []], + ["Pyramid", True, ['Pegasus Boots']], + ["Pyramid", True, ['Flippers']], + + ["Pyramid Fairy - Left", False, []], + ["Pyramid Fairy - Left", False, [], ['Magic Mirror']], + ["Pyramid Fairy - Left", False, [], ['Crystal 5']], + ["Pyramid Fairy - Left", False, [], ['Crystal 6']], + ["Pyramid Fairy - Left", True, ['Crystal 5', 'Crystal 6', 'Magic Mirror', 'Pegasus Boots']], + + ["Pyramid Fairy - Right", False, []], + ["Pyramid Fairy - Right", False, [], ['Magic Mirror']], + ["Pyramid Fairy - Right", False, [], ['Crystal 5']], + ["Pyramid Fairy - Right", False, [], ['Crystal 6']], + ["Pyramid Fairy - Right", True, ['Crystal 5', 'Crystal 6', 'Magic Mirror', 'Pegasus Boots']], + ]) + + def testMireArea(self): + self.run_location_tests([ + ["Mire Shed - Left", False, []], + ["Mire Shed - Left", True, ['Pegasus Boots']], + + ["Mire Shed - Right", False, []], + ["Mire Shed - Right", True, ['Pegasus Boots']], + ]) \ No newline at end of file diff --git a/test/inverted_owg/TestDeathMountain.py b/test/inverted_owg/TestDeathMountain.py new file mode 100644 index 00000000..093331c2 --- /dev/null +++ b/test/inverted_owg/TestDeathMountain.py @@ -0,0 +1,113 @@ +from test.inverted_owg.TestInvertedOWG import TestInvertedOWG + + +class TestDeathMountain(TestInvertedOWG): + + def testWestDeathMountain(self): + self.run_location_tests([ + ["Old Man", False, []], + ["Old Man", False, [], ['Lamp']], + ["Old Man", True, ['Pegasus Boots', 'Lamp']], + + ["Spectacle Rock Cave", False, []], + ["Spectacle Rock Cave", True, ['Pegasus Boots']], + ]) + + def testEastDeathMountain(self): + self.run_location_tests([ + ["Spiral Cave", False, []], + ["Spiral Cave", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Spiral Cave", False, [], ['Moon Pearl', 'Progressive Sword']], + ["Spiral Cave", True, ['Magic Mirror', 'Progressive Glove', 'Progressive Glove', 'Lamp', 'Progressive Sword']], + ["Spiral Cave", True, ['Magic Mirror', 'Progressive Glove', 'Progressive Glove', 'Pegasus Boots', 'Progressive Sword']], + ["Spiral Cave", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Paradox Cave Lower - Far Left", False, []], + ["Paradox Cave Lower - Far Left", False, [], ['Moon Pearl']], + ["Paradox Cave Lower - Far Left", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Paradox Cave Lower - Left", False, []], + ["Paradox Cave Lower - Left", False, [], ['Moon Pearl']], + ["Paradox Cave Lower - Left", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Paradox Cave Lower - Middle", False, []], + ["Paradox Cave Lower - Middle", False, [], ['Moon Pearl']], + ["Paradox Cave Lower - Middle", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Paradox Cave Lower - Right", False, []], + ["Paradox Cave Lower - Right", False, [], ['Moon Pearl']], + ["Paradox Cave Lower - Right", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Paradox Cave Lower - Far Right", False, []], + ["Paradox Cave Lower - Far Right", False, [], ['Moon Pearl']], + ["Paradox Cave Lower - Far Right", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Paradox Cave Upper - Left", False, []], + ["Paradox Cave Upper - Left", False, [], ['Moon Pearl']], + ["Paradox Cave Upper - Left", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Paradox Cave Upper - Right", False, []], + ["Paradox Cave Upper - Right", False, [], ['Moon Pearl']], + ["Paradox Cave Upper - Right", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Mimic Cave", False, []], + ["Mimic Cave", False, [], ['Moon Pearl']], + ["Mimic Cave", False, [], ['Hammer']], + ["Mimic Cave", True, ['Moon Pearl', 'Hammer', 'Pegasus Boots']], + + ["Ether Tablet", False, []], + ["Ether Tablet", False, ['Progressive Sword'], ['Progressive Sword']], + ["Ether Tablet", False, [], ['Book of Mudora']], + ["Ether Tablet", False, [], ['Moon Pearl']], + ["Ether Tablet", True, ['Pegasus Boots', 'Moon Pearl', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + + ["Spectacle Rock", False, []], + ["Spectacle Rock", False, [], ['Moon Pearl']], + ["Spectacle Rock", True, ['Moon Pearl', 'Pegasus Boots']], + ]) + + + def testWestDarkWorldDeathMountain(self): + self.run_location_tests([ + ["Spike Cave", False, []], + ["Spike Cave", False, [], ['Progressive Glove']], + ["Spike Cave", False, [], ['Hammer']], + ["Spike Cave", False, [], ['Cape', 'Cane of Byrna']], + # ER doesn't put in an extra potion + #["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape']], + ["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape', 'Moon Pearl']], + ["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cane of Byrna']], + ]) + + def testEastDarkWorldDeathMountain(self): + self.run_location_tests([ + ["Superbunny Cave - Top", False, []], + ["Superbunny Cave - Top", True, ['Pegasus Boots']], + + ["Superbunny Cave - Bottom", False, []], + ["Superbunny Cave - Bottom", True, ['Pegasus Boots']], + + ["Hookshot Cave - Bottom Right", False, []], + ["Hookshot Cave - Bottom Right", False, [], ['Hookshot', 'Pegasus Boots']], + ["Hookshot Cave - Bottom Right", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']], + ["Hookshot Cave - Bottom Right", True, ['Pegasus Boots']], + + ["Hookshot Cave - Bottom Left", False, []], + ["Hookshot Cave - Bottom Left", False, [], ['Hookshot']], + ["Hookshot Cave - Bottom Left", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']], + ["Hookshot Cave - Bottom Left", True, ['Pegasus Boots', 'Hookshot']], + + ["Hookshot Cave - Top Left", False, []], + ["Hookshot Cave - Top Left", False, [], ['Hookshot']], + ["Hookshot Cave - Top Left", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']], + ["Hookshot Cave - Top Left", True, ['Pegasus Boots', 'Hookshot']], + + ["Hookshot Cave - Top Right", False, []], + ["Hookshot Cave - Top Right", False, [], ['Hookshot']], + ["Hookshot Cave - Top Right", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']], + ["Hookshot Cave - Top Right", True, ['Pegasus Boots', 'Hookshot']], + ]) \ No newline at end of file diff --git a/test/inverted_owg/TestDungeons.py b/test/inverted_owg/TestDungeons.py new file mode 100644 index 00000000..495912cd --- /dev/null +++ b/test/inverted_owg/TestDungeons.py @@ -0,0 +1,115 @@ +from test.inverted_owg.TestInvertedOWG import TestInvertedOWG + +class TestDungeons(TestInvertedOWG): + + def testFirstDungeonChests(self): + self.run_location_tests([ + ["Hyrule Castle - Map Chest", False, []], + ["Hyrule Castle - Map Chest", True, ['Beat Agahnim 1']], + ["Hyrule Castle - Map Chest", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hyrule Castle - Map Chest", True, ['Magic Mirror', 'Pegasus Boots']], + + ["Sanctuary", False, []], + ["Sanctuary", False, ['Beat Agahnim 1']], + ["Sanctuary", True, ['Magic Mirror', 'Beat Agahnim 1']], + ["Sanctuary", True, ['Lamp', 'Beat Agahnim 1', 'Small Key (Escape)']], + ["Sanctuary", True, ['Moon Pearl', 'Pegasus Boots']], + ["Sanctuary", True, ['Magic Mirror', 'Pegasus Boots']], + + ["Sewers - Secret Room - Left", False, []], + ["Sewers - Secret Room - Left", True, ['Moon Pearl', 'Progressive Glove', 'Pegasus Boots']], + ["Sewers - Secret Room - Left", True, ['Moon Pearl', 'Pegasus Boots', 'Lamp', 'Small Key (Escape)']], + ["Sewers - Secret Room - Left", True, + ['Magic Mirror', 'Pegasus Boots', 'Lamp', 'Small Key (Escape)']], + ["Sewers - Secret Room - Left", True, ['Beat Agahnim 1', 'Lamp', 'Small Key (Escape)']], + + ["Eastern Palace - Compass Chest", False, []], + ["Eastern Palace - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots']], + ["Eastern Palace - Compass Chest", True, ['Magic Mirror', 'Pegasus Boots']], + ["Eastern Palace - Compass Chest", True, ['Beat Agahnim 1']], + + ["Desert Palace - Map Chest", False, []], + ["Desert Palace - Map Chest", True, ['Moon Pearl', 'Pegasus Boots']], + ["Desert Palace - Map Chest", True, ['Book of Mudora', 'Magic Mirror', 'Pegasus Boots']], + + ["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", True, ['Progressive Sword', 'Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Moon Pearl', 'Pegasus Boots', 'Lamp']], + ["Desert Palace - Boss", True, ['Progressive Sword', 'Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Moon Pearl', 'Pegasus Boots', 'Fire Rod']], + + ["Tower of Hera - Basement Cage", False, []], + ["Tower of Hera - Basement Cage", False, [], ['Moon Pearl']], + ["Tower of Hera - Basement Cage", True, ['Pegasus Boots', 'Moon Pearl']], + + ["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, ['Pegasus Boots', 'Progressive Sword']], + ["Castle Tower - Room 03", True, ['Pegasus Boots', 'Progressive Bow']], + + #todo: Qirn Jump + #["Palace of Darkness - Shooter Room", True, []], + ["Palace of Darkness - Shooter Room", True, ['Pegasus Boots']], + ["Palace of Darkness - Shooter Room", True, ['Hammer']], + ["Palace of Darkness - Shooter Room", True, ['Flippers']], + ["Palace of Darkness - Shooter Room", True, ['Pegasus Boots', 'Progressive Glove']], + ["Palace of Darkness - Shooter Room", True, ['Pegasus Boots', 'Magic Mirror']], + + ["Swamp Palace - Entrance", False, []], + ["Swamp Palace - Entrance", False, [], ['Magic Mirror']], + ["Swamp Palace - Entrance", False, [], ['Flippers']], + ["Swamp Palace - Entrance", True, ['Magic Mirror', 'Flippers', 'Pegasus Boots']], + ["Swamp Palace - Entrance", True, ['Magic Mirror', 'Flippers', 'Beat Agahnim 1']], + + ["Skull Woods - Compass Chest", True, []], + + ["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 - Big Key Chest", True, []], + + ["Skull Woods - Bridge Room", False, []], + ["Skull Woods - Bridge Room", False, [], ['Fire Rod']], + ["Skull Woods - Bridge Room", True, ['Fire Rod']], + + ["Thieves' Town - Map Chest", True, []], + + ["Ice Palace - Compass Chest", False, []], + ["Ice Palace - Compass Chest", False, [], ['Fire Rod', 'Bombos', 'Progressive Sword']], + #todo: Qirn Jump + #["Ice Palace - Compass Chest", True, ['Fire Rod']], + #["Ice Palace - Compass Chest", True, ['Bombos', 'Progressive Sword']], + ["Ice Palace - Compass Chest", True, ['Pegasus Boots', 'Fire Rod']], + ["Ice Palace - Compass Chest", True, ['Pegasus Boots', 'Bombos', 'Progressive Sword']], + + ["Misery Mire - Bridge Chest", False, []], + ["Misery Mire - Bridge Chest", False, [], ['Ether']], + ["Misery Mire - Bridge Chest", False, [], ['Progressive Sword']], + ["Misery Mire - Bridge Chest", True, ['Pegasus Boots', 'Ether', 'Progressive Sword']], + + ["Turtle Rock - Compass Chest", False, []], + ["Turtle Rock - Compass Chest", False, [], ['Cane of Somaria']], + ["Turtle Rock - Compass Chest", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl', 'Cane of Somaria', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)']], + ["Turtle Rock - Compass Chest", True, ['Pegasus Boots', 'Quake', 'Progressive Sword', 'Cane of Somaria']], + + ["Turtle Rock - Chain Chomps", False, []], + ["Turtle Rock - Chain Chomps", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl']], + + ["Turtle Rock - Crystaroller Room", False, []], + ["Turtle Rock - Crystaroller Room", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl', 'Big Key (Turtle Rock)']], + ["Turtle Rock - Crystaroller Room", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl', 'Lamp', 'Cane of Somaria']], + + ["Ganons Tower - Hope Room - Left", False, []], + ["Ganons Tower - Hope Room - Left", False, [], ['Crystal 1']], + ["Ganons Tower - Hope Room - Left", False, [], ['Crystal 2']], + ["Ganons Tower - Hope Room - Left", False, [], ['Crystal 3']], + ["Ganons Tower - Hope Room - Left", False, [], ['Crystal 4']], + ["Ganons Tower - Hope Room - Left", False, [], ['Crystal 5']], + ["Ganons Tower - Hope Room - Left", False, [], ['Crystal 6']], + ["Ganons Tower - Hope Room - Left", False, [], ['Crystal 7']], + ["Ganons Tower - Hope Room - Left", True, ['Beat Agahnim 1', 'Hookshot', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7']], + ["Ganons Tower - Hope Room - Left", True, ['Pegasus Boots', 'Magic Mirror', 'Hookshot', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7']], + ["Ganons Tower - Hope Room - Left", True, ['Pegasus Boots', 'Moon Pearl', 'Hookshot', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7']], + ]) \ No newline at end of file diff --git a/test/inverted_owg/TestInvertedOWG.py b/test/inverted_owg/TestInvertedOWG.py new file mode 100644 index 00000000..dc5d5484 --- /dev/null +++ b/test/inverted_owg/TestInvertedOWG.py @@ -0,0 +1,30 @@ +from BaseClasses import World +from Dungeons import create_dungeons, get_dungeon_item_pool +from EntranceShuffle import link_inverted_entrances +from InvertedRegions import create_inverted_regions +from ItemList import generate_itempool, difficulties +from Items import ItemFactory +from Regions import mark_light_world_regions +from Rules import set_rules +from test.TestBase import TestBase + + +class TestInvertedOWG(TestBase): + def setUp(self): + self.world = World(1, 'vanilla', 'owglitches', 'inverted', 'random', 'normal', 'normal', 'none', 'on', 'ganon', 'balanced', + True, False, False, False, False, False, False, False, False, None, + 'none', False) + self.world.difficulty_requirements = difficulties['normal'] + create_inverted_regions(self.world, 1) + create_dungeons(self.world, 1) + link_inverted_entrances(self.world, 1) + generate_itempool(self.world, 1) + self.world.required_medallions[1] = ['Ether', 'Quake'] + self.world.itempool.extend(get_dungeon_item_pool(self.world)) + self.world.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)) + self.world.get_location('Agahnim 1', 1).item = None + self.world.get_location('Agahnim 2', 1).item = None + self.world.precollected_items.clear() + self.world.itempool.append(ItemFactory('Pegasus Boots', 1)) + mark_light_world_regions(self.world) + set_rules(self.world, 1) diff --git a/test/inverted_owg/TestLightWorld.py b/test/inverted_owg/TestLightWorld.py new file mode 100644 index 00000000..ad833017 --- /dev/null +++ b/test/inverted_owg/TestLightWorld.py @@ -0,0 +1,312 @@ +from test.inverted_owg.TestInvertedOWG import TestInvertedOWG + + +class TestLightWorld(TestInvertedOWG): + + def testLightWorld(self): + self.run_location_tests([ + ["Master Sword Pedestal", False, []], + ["Master Sword Pedestal", False, [], ['Green Pendant']], + ["Master Sword Pedestal", False, [], ['Red Pendant']], + ["Master Sword Pedestal", False, [], ['Blue Pendant']], + ["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Moon Pearl', 'Pegasus Boots']], + ["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Magic Mirror', 'Pegasus Boots']], + + ["Link's Uncle", False, []], + ["Link's Uncle", False, [], ['Moon Pearl']], + ["Link's Uncle", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Secret Passage", False, []], + ["Secret Passage", False, [], ['Moon Pearl']], + ["Secret Passage", True, ['Moon Pearl', 'Pegasus Boots']], + + ["King's Tomb", False, []], + ["King's Tomb", False, [], ['Pegasus Boots']], + ["King's Tomb", False, [], ['Moon Pearl']], + ["King's Tomb", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl']], + + ["Floodgate Chest", False, []], + ["Floodgate Chest", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Floodgate Chest", True, ['Moon Pearl', 'Pegasus Boots']], + ["Floodgate Chest", True, ['Magic Mirror', 'Pegasus Boots']], + + ["Kakariko Tavern", False, []], + ["Kakariko Tavern", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Kakariko Tavern", True, ['Moon Pearl', 'Pegasus Boots']], + ["Kakariko Tavern", True, ['Magic Mirror', 'Pegasus Boots']], + ["Kakariko Tavern", True, ['Beat Agahnim 1', 'Moon Pearl']], + ["Kakariko Tavern", True, ['Beat Agahnim 1', 'Magic Mirror']], + + ["Chicken House", False, []], + ["Chicken House", False, [], ['Moon Pearl']], + ["Chicken House", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Aginah's Cave", False, []], + ["Aginah's Cave", False, [], ['Moon Pearl']], + ["Aginah's Cave", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Sahasrahla's Hut - Left", False, []], + ["Sahasrahla's Hut - Left", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Sahasrahla's Hut - Left", False, [], ['Moon Pearl', 'Pegasus Boots']], + ["Sahasrahla's Hut - Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Sahasrahla's Hut - Left", True, ['Magic Mirror', 'Pegasus Boots']], + ##todo: Damage boost superbunny not in logic + #["Sahasrahla's Hut - Left", True, ['Beat Agahnim 1', 'Pegasus Boots']], + ["Sahasrahla's Hut - Left", True, ['Moon Pearl', 'Beat Agahnim 1']], + + ["Sahasrahla's Hut - Middle", False, []], + ["Sahasrahla's Hut - Middle", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Sahasrahla's Hut - Middle", False, [], ['Moon Pearl', 'Pegasus Boots']], + ["Sahasrahla's Hut - Middle", True, ['Moon Pearl', 'Pegasus Boots']], + ["Sahasrahla's Hut - Middle", True, ['Magic Mirror', 'Pegasus Boots']], + #["Sahasrahla's Hut - Middle", True, ['Beat Agahnim 1', 'Pegasus Boots']], + ["Sahasrahla's Hut - Middle", True, ['Moon Pearl', 'Beat Agahnim 1']], + + ["Sahasrahla's Hut - Right", False, []], + ["Sahasrahla's Hut - Right", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Sahasrahla's Hut - Right", False, [], ['Moon Pearl', 'Pegasus Boots']], + ["Sahasrahla's Hut - Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Sahasrahla's Hut - Right", True, ['Magic Mirror', 'Pegasus Boots']], + #["Sahasrahla's Hut - Right", True, ['Beat Agahnim 1', 'Pegasus Boots']], + ["Sahasrahla's Hut - Right", True, ['Moon Pearl', 'Beat Agahnim 1']], + + ["Kakariko Well - Top", False, []], + ["Kakariko Well - Top", False, [], ['Moon Pearl']], + ["Kakariko Well - Top", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Kakariko Well - Left", False, []], + ["Kakariko Well - Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Kakariko Well - Left", True, ['Magic Mirror', 'Pegasus Boots']], + ["Kakariko Well - Left", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Kakariko Well - Left", True, ['Beat Agahnim 1']], + + ["Kakariko Well - Middle", False, []], + ["Kakariko Well - Middle", True, ['Moon Pearl', 'Pegasus Boots']], + ["Kakariko Well - Middle", True, ['Magic Mirror', 'Pegasus Boots']], + ["Kakariko Well - Middle", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Kakariko Well - Middle", True, ['Beat Agahnim 1']], + + ["Kakariko Well - Right", False, []], + ["Kakariko Well - Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Kakariko Well - Right", True, ['Magic Mirror', 'Pegasus Boots']], + ["Kakariko Well - Right", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Kakariko Well - Right", True, ['Beat Agahnim 1']], + + ["Kakariko Well - Bottom", False, []], + ["Kakariko Well - Bottom", True, ['Moon Pearl', 'Pegasus Boots']], + ["Kakariko Well - Bottom", True, ['Magic Mirror', 'Pegasus Boots']], + ["Kakariko Well - Bottom", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Kakariko Well - Bottom", True, ['Beat Agahnim 1']], + + ["Blind's Hideout - Top", False, []], + ["Blind's Hideout - Top", False, [], ['Moon Pearl']], + ["Blind's Hideout - Top", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Blind's Hideout - Left", False, []], + ["Blind's Hideout - Left", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Blind's Hideout - Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Blind's Hideout - Left", True, ['Magic Mirror', 'Pegasus Boots']], + ["Blind's Hideout - Left", True, ['Magic Mirror', 'Beat Agahnim 1']], + + ["Blind's Hideout - Right", False, []], + ["Blind's Hideout - Right", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Blind's Hideout - Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Blind's Hideout - Right", True, ['Magic Mirror', 'Pegasus Boots']], + ["Blind's Hideout - Right", True, ['Magic Mirror', 'Beat Agahnim 1']], + + ["Blind's Hideout - Far Left", False, []], + ["Blind's Hideout - Far Left", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Blind's Hideout - Far Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Blind's Hideout - Far Left", True, ['Magic Mirror', 'Pegasus Boots']], + ["Blind's Hideout - Far Left", True, ['Magic Mirror', 'Beat Agahnim 1']], + + ["Blind's Hideout - Far Right", False, []], + ["Blind's Hideout - Far Right", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Blind's Hideout - Far Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Blind's Hideout - Far Right", True, ['Magic Mirror', 'Pegasus Boots']], + ["Blind's Hideout - Far Right", True, ['Magic Mirror', 'Beat Agahnim 1']], + + ["Bonk Rock Cave", False, []], + ["Bonk Rock Cave", False, [], ['Pegasus Boots']], + ["Bonk Rock Cave", False, [], ['Moon Pearl']], + ["Bonk Rock Cave", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Mini Moldorm Cave - Far Left", False, []], + ["Mini Moldorm Cave - Far Left", False, [], ['Moon Pearl']], + ["Mini Moldorm Cave - Far Left", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Mini Moldorm Cave - Left", False, []], + ["Mini Moldorm Cave - Left", False, [], ['Moon Pearl']], + ["Mini Moldorm Cave - Left", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Mini Moldorm Cave - Right", False, []], + ["Mini Moldorm Cave - Right", False, [], ['Moon Pearl']], + ["Mini Moldorm Cave - Right", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Mini Moldorm Cave - Far Right", False, []], + ["Mini Moldorm Cave - Far Right", False, [], ['Moon Pearl']], + ["Mini Moldorm Cave - Far Right", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Mini Moldorm Cave - Generous Guy", False, []], + ["Mini Moldorm Cave - Generous Guy", False, [], ['Moon Pearl']], + ["Mini Moldorm Cave - Generous Guy", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Ice Rod Cave", False, []], + ["Ice Rod Cave", False, [], ['Moon Pearl']], + ["Ice Rod Cave", True, ['Moon Pearl', 'Pegasus Boots']], + #I don't think so + #["Ice Rod Cave", True, ['Magic Mirror', 'Pegasus Boots', 'BigRedBomb']], + #["Ice Rod Cave", True, ['Magic Mirror', 'Beat Agahnim 1', 'BigRedBomb']], + + ["Bottle Merchant", False, []], + ["Bottle Merchant", True, ['Pegasus Boots', 'Magic Mirror']], + ["Bottle Merchant", True, ['Moon Pearl', 'Pegasus Boots']], + ["Bottle Merchant", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Bottle Merchant", True, ['Magic Mirror', 'Pegasus Boots']], + + ["Sahasrahla", False, []], + ["Sahasrahla", False, [], ['Green Pendant']], + ["Sahasrahla", True, ['Green Pendant', 'Magic Mirror', 'Pegasus Boots']], + ["Sahasrahla", True, ['Green Pendant', 'Moon Pearl', 'Pegasus Boots']], + ["Sahasrahla", True, ['Green Pendant', 'Magic Mirror', 'Pegasus Boots']], + ["Sahasrahla", True, ['Green Pendant', 'Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + + ["Magic Bat", False, []], + ["Magic Bat", False, [], ['Magic Powder']], + ["Magic Bat", False, [], ['Moon Pearl']], + ["Magic Bat", True, ['Magic Powder', 'Pegasus Boots', 'Moon Pearl']], + + ["Sick Kid", False, []], + ["Sick Kid", False, [], ['AnyBottle']], + ["Sick Kid", False, ['Bottle (Bee)']], + ["Sick Kid", False, ['Bottle (Fairy)']], + ["Sick Kid", False, ['Bottle (Red Potion)']], + ["Sick Kid", False, ['Bottle (Green Potion)']], + ["Sick Kid", False, ['Bottle (Blue Potion)']], + ["Sick Kid", False, ['Bottle']], + ["Sick Kid", False, ['Bottle (Good Bee)']], + ["Sick Kid", True, ['Bottle (Bee)', 'Magic Mirror', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Bee)', 'Moon Pearl', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Fairy)', 'Magic Mirror', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Fairy)', 'Moon Pearl', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Red Potion)', 'Magic Mirror', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Red Potion)', 'Moon Pearl', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Green Potion)', 'Magic Mirror', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Green Potion)', 'Moon Pearl', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Blue Potion)', 'Magic Mirror', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Blue Potion)', 'Moon Pearl', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Good Bee)', 'Magic Mirror', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle (Good Bee)', 'Moon Pearl', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle', 'Magic Mirror', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle', 'Moon Pearl', 'Pegasus Boots']], + ["Sick Kid", True, ['Bottle', 'Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + + ["Hobo", False, []], + ["Hobo", False, [], ['Moon Pearl']], + ["Hobo", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hobo", True, ['Moon Pearl', 'Beat Agahnim 1']], + + ["Bombos Tablet", False, []], + ["Bombos Tablet", False, ['Progressive Sword'], ['Progressive Sword']], + ["Bombos Tablet", False, [], ['Book of Mudora']], + ["Bombos Tablet", True, ['Moon Pearl', 'Book of Mudora', 'Pegasus Boots', 'Progressive Sword', 'Progressive Sword']], + ["Bombos Tablet", True, ['Magic Mirror', 'Book of Mudora', 'Pegasus Boots', 'Progressive Sword', 'Progressive Sword']], + ["Bombos Tablet", True, ['Progressive Glove', 'Progressive Glove', 'Book of Mudora', 'Pegasus Boots', 'Progressive Sword', 'Progressive Sword']], + + ["King Zora", False, []], + ["King Zora", False, [], ['Moon Pearl']], + ["King Zora", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Lost Woods Hideout", False, []], + ["Lost Woods Hideout", False, [], ['Moon Pearl']], + ["Lost Woods Hideout", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Lumberjack Tree", False, []], + ["Lumberjack Tree", False, [], ['Beat Agahnim 1']], + ["Lumberjack Tree", False, [], ['Pegasus Boots']], + ["Lumberjack Tree", False, [], ['Moon Pearl']], + ["Lumberjack Tree", True, ['Pegasus Boots', 'Moon Pearl', 'Beat Agahnim 1']], + + ["Cave 45", False, []], + ["Cave 45", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Cave 45", True, ['Moon Pearl', 'Pegasus Boots']], + ["Cave 45", True, ['Magic Mirror', 'Pegasus Boots']], + ["Cave 45", True, ['Magic Mirror', 'Beat Agahnim 1']], + + ["Graveyard Cave", False, []], + ["Graveyard Cave", False, [], ['Moon Pearl']], + ["Graveyard Cave", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Checkerboard Cave", False, []], + ["Checkerboard Cave", False, [], ['Progressive Glove']], + ["Checkerboard Cave", False, [], ['Moon Pearl']], + ["Checkerboard Cave", True, ['Progressive Glove', 'Pegasus Boots', 'Moon Pearl']], + + ["Library", False, []], + ["Library", False, [], ['Pegasus Boots']], + ["Library", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Library", True, ['Pegasus Boots', 'Moon Pearl']], + ["Library", True, ['Pegasus Boots', 'Magic Mirror']], + + ["Mushroom", False, []], + ["Mushroom", False, [], ['Moon Pearl']], + ["Mushroom", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Potion Shop", False, []], + ["Potion Shop", False, [], ['Mushroom']], + ["Potion Shop", False, [], ['Moon Pearl']], + ["Potion Shop", True, ['Mushroom', 'Moon Pearl', 'Pegasus Boots']], + + ["Maze Race", False, []], + ["Maze Race", False, [], ['Moon Pearl']], + ["Maze Race", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Desert Ledge", False, []], + ["Desert Ledge", True, ['Book of Mudora', 'Magic Mirror', 'Pegasus Boots']], + ["Desert Ledge", True, ['Book of Mudora', 'Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Desert Ledge", True, ['Book of Mudora', 'Beat Agahnim 1']], + ["Desert Ledge", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Lake Hylia Island", False, []], + ["Lake Hylia Island", False, [], ['Moon Pearl']], + ["Lake Hylia Island", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Sunken Treasure", False, []], + ["Sunken Treasure", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Sunken Treasure", True, ['Moon Pearl', 'Pegasus Boots']], + ["Sunken Treasure", True, ['Magic Mirror', 'Pegasus Boots']], + ["Sunken Treasure", True, ['Magic Mirror', 'Beat Agahnim 1']], + + ["Zora's Ledge", False, []], + ["Zora's Ledge", False, [], ['Moon Pearl']], + ["Zora's Ledge", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Flute Spot", False, []], + ["Flute Spot", False, [], ['Shovel']], + ["Flute Spot", False, [], ['Moon Pearl']], + ["Flute Spot", True, ['Shovel', 'Moon Pearl', 'Pegasus Boots']], + + ["Waterfall Fairy - Left", False, []], + ["Waterfall Fairy - Left", False, [], ['Moon Pearl']], + ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Beat Agahnim 1']], + ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + + ["Waterfall Fairy - Right", False, []], + ["Waterfall Fairy - Right", False, [], ['Moon Pearl']], + ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Beat Agahnim 1']], + ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + + # Bomb Merchant is not a separate check, and is only used as part of the Pyramid Fairy rules + # ["Bomb Merchant", False, []], + # ["Bomb Merchant", False, [], ['Crystal 5']], + # ["Bomb Merchant", False, [], ['Crystal 6']], + # ["Bomb Merchant", True, ['Crystal 5', 'Crystal 6', 'Moon Pearl', 'Pegasus Boots']], + # ["Bomb Merchant", True, ['Crystal 5', 'Crystal 6', 'Magic Mirror', 'Pegasus Boots']], + # ["Bomb Merchant", True, ['Crystal 5', 'Crystal 6', 'Beat Agahnim 1']], + + ["Ganon", False, []], + ]) \ No newline at end of file diff --git a/test/inverted_owg/__init__.py b/test/inverted_owg/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/owg/TestDarkWorld.py b/test/owg/TestDarkWorld.py new file mode 100644 index 00000000..a5f9ed0f --- /dev/null +++ b/test/owg/TestDarkWorld.py @@ -0,0 +1,206 @@ +from test.owg.TestVanillaOWG import TestVanillaOWG + + +class TestDarkWorld(TestVanillaOWG): + + def testSouthDarkWorld(self): + self.run_location_tests([ + ["Hype Cave - Top", False, []], + ["Hype Cave - Top", False, [], ['Moon Pearl']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Middle Right", False, []], + ["Hype Cave - Middle Right", False, [], ['Moon Pearl']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Middle Left", False, []], + ["Hype Cave - Middle Left", False, [], ['Moon Pearl']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Bottom", False, []], + ["Hype Cave - Bottom", False, [], ['Moon Pearl']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Generous Guy", False, []], + ["Hype Cave - Generous Guy", False, [], ['Moon Pearl']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Stumpy", False, []], + ["Stumpy", False, [], ['Moon Pearl']], + ["Stumpy", True, ['Moon Pearl', 'Pegasus Boots']], + ["Stumpy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Stumpy", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Stumpy", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Stumpy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Stumpy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Digging Game", False, []], + ["Digging Game", False, [], ['Moon Pearl']], + ["Digging Game", True, ['Moon Pearl', 'Pegasus Boots']], + ["Digging Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Digging Game", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Digging Game", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Digging Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Digging Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']] + ]) + + def testEastDarkWorld(self): + self.run_location_tests([ + ["Catfish", False, []], + ["Catfish", False, [], ['Moon Pearl']], + ["Catfish", False, [], ['Progressive Glove', 'Pegasus Boots']], + ["Catfish", True, ['Moon Pearl', 'Pegasus Boots']], + ["Catfish", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove']], + ["Catfish", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Catfish", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Flippers']], + + ["Pyramid", False, []], + ["Pyramid", False, [], ['Beat Agahnim 1', 'Moon Pearl', 'Magic Mirror']], + ["Pyramid", False, [], ['Beat Agahnim 1', 'Moon Pearl', 'Pegasus Boots']], + ["Pyramid", True, ['Moon Pearl', 'Pegasus Boots']], + ["Pyramid", True, ['Magic Mirror', 'Pegasus Boots']], + ["Pyramid", True, ['Beat Agahnim 1']], + ["Pyramid", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Pyramid", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Flippers']], + + ["Pyramid Fairy - Left", False, []], + ["Pyramid Fairy - Left", False, [], ['Pegasus Boots', 'Moon Pearl', 'Beat Agahnim 1']], + ["Pyramid Fairy - Left", False, [], ['Pegasus Boots', 'Moon Pearl', 'Crystal 5']], + ["Pyramid Fairy - Left", False, [], ['Pegasus Boots', 'Moon Pearl', 'Crystal 6']], + ["Pyramid Fairy - Left", False, [], ['Magic Mirror', 'Crystal 5']], + ["Pyramid Fairy - Left", False, [], ['Magic Mirror', 'Crystal 6']], + ["Pyramid Fairy - Left", False, [], ['Magic Mirror', 'Moon Pearl']], + ["Pyramid Fairy - Left", True, ['Magic Mirror', 'Pegasus Boots']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Hammer']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Progressive Glove', 'Hammer']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot', 'Magic Mirror']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Flippers', 'Hookshot', 'Magic Mirror']], + ["Pyramid Fairy - Left", True, ['Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Ocarina', 'Magic Mirror']], + ["Pyramid Fairy - Left", True, ['Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Lamp', 'Magic Mirror']], + + ["Pyramid Fairy - Right", False, []], + ["Pyramid Fairy - Right", False, [], ['Pegasus Boots', 'Moon Pearl', 'Beat Agahnim 1']], + ["Pyramid Fairy - Right", False, [], ['Pegasus Boots', 'Moon Pearl', 'Crystal 5']], + ["Pyramid Fairy - Right", False, [], ['Pegasus Boots', 'Moon Pearl', 'Crystal 6']], + ["Pyramid Fairy - Right", False, [], ['Magic Mirror', 'Crystal 5']], + ["Pyramid Fairy - Right", False, [], ['Magic Mirror', 'Crystal 6']], + ["Pyramid Fairy - Right", False, [], ['Magic Mirror', 'Moon Pearl']], + ["Pyramid Fairy - Right", True, ['Magic Mirror', 'Pegasus Boots']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Hammer']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Progressive Glove', 'Hammer']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot', 'Magic Mirror']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Flippers', 'Hookshot', 'Magic Mirror']], + ["Pyramid Fairy - Right", True, ['Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Ocarina', 'Magic Mirror']], + ["Pyramid Fairy - Right", True, ['Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Lamp', 'Magic Mirror']], + + ["Ganon", False, []], + ["Ganon", False, [], ['Moon Pearl']], + ["Ganon", False, [], ['Beat Agahnim 2']], + ]) + + def testWestDarkWorld(self): + self.run_location_tests([ + ["Brewery", False, []], + ["Brewery", False, [], ['Moon Pearl']], + ["Brewery", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot', 'Progressive Glove']], + ["Brewery", True, ['Moon Pearl', 'Pegasus Boots']], + ["Brewery", True, ['Moon Pearl', 'Ocarina', 'Magic Mirror']], + ["Brewery", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Brewery", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Brewery", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Brewery", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["C-Shaped House", False, []], + ["C-Shaped House", False, [], ['Moon Pearl', 'Magic Mirror']], + ["C-Shaped House", True, ['Moon Pearl', 'Pegasus Boots']], + ["C-Shaped House", True, ['Magic Mirror', 'Pegasus Boots']], + ["C-Shaped House", True, ['Magic Mirror', 'Ocarina']], + ["C-Shaped House", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["C-Shaped House", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["C-Shaped House", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["C-Shaped House", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Chest Game", False, []], + ["Chest Game", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Chest Game", True, ['Moon Pearl', 'Pegasus Boots']], + ["Chest Game", True, ['Magic Mirror', 'Pegasus Boots']], + ["Chest Game", True, ['Magic Mirror', 'Ocarina']], + ["Chest Game", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Chest Game", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Chest Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Chest Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Peg Cave", False, []], + ["Peg Cave", False, [], ['Moon Pearl']], + ["Peg Cave", False, [], ['Hammer']], + ["Peg Cave", False, ['Progressive Glove'], ['Pegasus Boots', 'Progressive Glove']], + ["Peg Cave", True, ['Moon Pearl', 'Hammer', 'Pegasus Boots']], + ["Peg Cave", True, ['Moon Pearl', 'Hammer', 'Progressive Glove', 'Progressive Glove']], + + ["Bumper Cave Ledge", False, []], + ["Bumper Cave Ledge", False, [], ['Moon Pearl']], + ["Bumper Cave Ledge", False, [], ['Cape', 'Pegasus Boots']], + ["Bumper Cave Ledge", False, [], ['Progressive Glove', 'Pegasus Boots']], + ["Bumper Cave Ledge", True, ['Moon Pearl', 'Pegasus Boots']], + ["Bumper Cave Ledge", True, ['Moon Pearl', 'Cape', 'Progressive Glove', 'Progressive Glove']], + ["Bumper Cave Ledge", True, ['Moon Pearl', 'Cape', 'Progressive Glove', 'Hammer']], + ["Bumper Cave Ledge", True, ['Moon Pearl', 'Cape', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + + ["Blacksmith", False, []], + ["Blacksmith", False, ['Progressive Glove'], ['Progressive Glove']], + ["Blacksmith", False, [], ['Moon Pearl']], + ["Blacksmith", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + + ["Purple Chest", False, []], + ["Purple Chest", False, ['Progressive Glove'], ['Progressive Glove']], + ["Purple Chest", False, [], ['Moon Pearl']], + ["Purple Chest", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']] + + + ]) + + def testMireArea(self): + self.run_location_tests([ + ["Mire Shed - Left", False, []], + ["Mire Shed - Left", False, ['Progressive Glove'], ['Progressive Glove', 'Pegasus Boots']], + ["Mire Shed - Left", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Mire Shed - Left", False, [], ['Ocarina', 'Pegasus Boots']], + ["Mire Shed - Left", True, ['Moon Pearl', 'Ocarina', 'Progressive Glove', 'Progressive Glove']], + ["Mire Shed - Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Mire Shed - Left", True, ['Magic Mirror', 'Ocarina', 'Progressive Glove', 'Progressive Glove']], + + ["Mire Shed - Right", False, []], + ["Mire Shed - Right", False, [], ['Moon Pearl', 'Magic Mirror']], + ["Mire Shed - Right", False, ['Progressive Glove'], ['Progressive Glove', 'Pegasus Boots']], + ["Mire Shed - Right", False, [], ['Ocarina', 'Pegasus Boots']], + ["Mire Shed - Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Mire Shed - Right", True, ['Magic Mirror', 'Ocarina', 'Progressive Glove', 'Progressive Glove']], + ["Mire Shed - Right", True, ['Moon Pearl', 'Ocarina', 'Progressive Glove', 'Progressive Glove']], + ]) \ No newline at end of file diff --git a/test/owg/TestDeathMountain.py b/test/owg/TestDeathMountain.py new file mode 100644 index 00000000..60d1e7e5 --- /dev/null +++ b/test/owg/TestDeathMountain.py @@ -0,0 +1,201 @@ +from test.owg.TestVanillaOWG import TestVanillaOWG + + +class TestDeathMountain(TestVanillaOWG): + + def testWestDeathMountain(self): + self.run_location_tests([ + ["Ether Tablet", False, []], + ["Ether Tablet", False, ['Progressive Sword'], ['Progressive Sword']], + ["Ether Tablet", False, [], ['Book of Mudora']], + ["Ether Tablet", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Ether Tablet", False, [], ['Pegasus Boots', 'Lamp', 'Ocarina']], + ["Ether Tablet", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Ether Tablet", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hammer']], + ["Ether Tablet", True, ['Pegasus Boots', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + ["Ether Tablet", True, ['Ocarina', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + ["Ether Tablet", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + ["Ether Tablet", True, ['Ocarina', 'Hammer', 'Hookshot', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + ["Ether Tablet", True, ['Progressive Glove', 'Lamp', 'Hammer', 'Hookshot', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + + ["Old Man", False, []], + ["Old Man", False, [], ['Lamp']], + ["Old Man", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Old Man", True, ['Pegasus Boots', 'Lamp']], + ["Old Man", True, ['Ocarina', 'Lamp']], + ["Old Man", True, ['Progressive Glove', 'Lamp']], + + ["Spectacle Rock Cave", False, []], + ["Spectacle Rock Cave", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Spectacle Rock Cave", False, [], ['Pegasus Boots', 'Lamp', 'Ocarina']], + ["Spectacle Rock Cave", True, ['Pegasus Boots']], + ["Spectacle Rock Cave", True, ['Ocarina']], + ["Spectacle Rock Cave", True, ['Progressive Glove', 'Lamp']], + + ["Spectacle Rock", False, []], + ["Spectacle Rock", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Spectacle Rock", False, [], ['Pegasus Boots', 'Lamp', 'Ocarina']], + ["Spectacle Rock", False, [], ['Pegasus Boots', 'Magic Mirror']], + ["Spectacle Rock", True, ['Pegasus Boots']], + ["Spectacle Rock", True, ['Ocarina', 'Magic Mirror']], + ["Spectacle Rock", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ]) + + def testEastDeathMountain(self): + self.run_location_tests([ + ["Mimic Cave", False, []], + ["Mimic Cave", False, [], ['Magic Mirror']], + ["Mimic Cave", False, [], ['Hammer']], + ["Mimic Cave", False, [], ['Pegasus Boots', 'Ocarina', 'Lamp']], + ["Mimic Cave", False, [], ['Pegasus Boots', 'Ocarina', 'Progressive Glove']], + ["Mimic Cave", True, ['Magic Mirror', 'Hammer', 'Pegasus Boots']], + ["Mimic Cave", True, ['Magic Mirror', 'Hammer', 'Progressive Glove', 'Lamp']], + ["Mimic Cave", True, ['Magic Mirror', 'Hammer', 'Ocarina']], + + ["Spiral Cave", False, []], + ["Spiral Cave", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Spiral Cave", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Spiral Cave", True, ['Pegasus Boots']], + ["Spiral Cave", True, ['Ocarina', 'Hookshot']], + ["Spiral Cave", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Spiral Cave", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Spiral Cave", True, ['Ocarina', 'Magic Mirror']], + + ["Paradox Cave Lower - Far Left", False, []], + ["Paradox Cave Lower - Far Left", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Far Left", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Far Left", True, ['Pegasus Boots']], + ["Paradox Cave Lower - Far Left", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Far Left", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Far Left", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Far Left", True, ['Ocarina', 'Magic Mirror']], + + ["Paradox Cave Lower - Left", False, []], + ["Paradox Cave Lower - Left", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Left", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Left", True, ['Pegasus Boots']], + ["Paradox Cave Lower - Left", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Left", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Left", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Left", True, ['Ocarina', 'Magic Mirror']], + + ["Paradox Cave Lower - Middle", False, []], + ["Paradox Cave Lower - Middle", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Middle", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Middle", True, ['Pegasus Boots']], + ["Paradox Cave Lower - Middle", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Middle", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Middle", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Middle", True, ['Ocarina', 'Magic Mirror']], + + ["Paradox Cave Lower - Right", False, []], + ["Paradox Cave Lower - Right", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Right", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Right", True, ['Pegasus Boots']], + ["Paradox Cave Lower - Right", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Right", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Right", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Right", True, ['Ocarina', 'Magic Mirror']], + + ["Paradox Cave Lower - Far Right", False, []], + ["Paradox Cave Lower - Far Right", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Far Right", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Far Right", True, ['Pegasus Boots']], + ["Paradox Cave Lower - Far Right", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Far Right", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Far Right", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Far Right", True, ['Ocarina', 'Magic Mirror']], + + ["Paradox Cave Upper - Left", False, []], + ["Paradox Cave Upper - Left", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Paradox Cave Upper - Left", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Paradox Cave Upper - Left", True, ['Pegasus Boots']], + ["Paradox Cave Upper - Left", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Upper - Left", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Upper - Left", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Upper - Left", True, ['Ocarina', 'Magic Mirror']], + + ["Paradox Cave Upper - Right", False, []], + ["Paradox Cave Upper - Right", False, [], ['Pegasus Boots', 'Progressive Glove', 'Ocarina']], + ["Paradox Cave Upper - Right", False, [], ['Pegasus Boots', 'Magic Mirror', 'Hookshot']], + ["Paradox Cave Upper - Right", True, ['Pegasus Boots']], + ["Paradox Cave Upper - Right", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Upper - Right", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Upper - Right", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Upper - Right", True, ['Ocarina', 'Magic Mirror']], + ]) + + def testWestDarkWorldDeathMountain(self): + self.run_location_tests([ + ["Spike Cave", False, []], + ["Spike Cave", False, [], ['Progressive Glove']], + ["Spike Cave", False, [], ['Moon Pearl']], + ["Spike Cave", False, [], ['Hammer']], + ["Spike Cave", False, [], ['Cape', 'Cane of Byrna']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cape']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cane of Byrna']], + ]) + + def testEastDarkWorldDeathMountain(self): + self.run_location_tests([ + ["Superbunny Cave - Top", False, []], + ["Superbunny Cave - Top", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Superbunny Cave - Top", True, ['Hammer', 'Pegasus Boots']], + ["Superbunny Cave - Top", True, ['Moon Pearl', 'Pegasus Boots']], + ["Superbunny Cave - Top", True, ['Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Superbunny Cave - Top", True, ['Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Ocarina']], + ["Superbunny Cave - Top", True, ['Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ["Superbunny Cave - Top", True, ['Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Lamp']], + + ["Superbunny Cave - Bottom", False, []], + ["Superbunny Cave - Bottom", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots']], + ["Superbunny Cave - Bottom", True, ['Hammer', 'Pegasus Boots']], + ["Superbunny Cave - Bottom", True, ['Moon Pearl', 'Pegasus Boots']], + ["Superbunny Cave - Bottom", True, ['Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Superbunny Cave - Bottom", True, ['Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Ocarina']], + ["Superbunny Cave - Bottom", True, ['Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ["Superbunny Cave - Bottom", True, ['Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Lamp']], + + ["Hookshot Cave - Bottom Right", False, []], + ["Hookshot Cave - Bottom Right", False, [], ['Progressive Glove', 'Pegasus Boots']], + ["Hookshot Cave - Bottom Right", False, [], ['Moon Pearl']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Pegasus Boots']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Ocarina', 'Pegasus Boots']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Lamp', 'Pegasus Boots']], + + ["Hookshot Cave - Bottom Left", False, []], + ["Hookshot Cave - Bottom Left", False, [], ['Progressive Glove', 'Pegasus Boots']], + ["Hookshot Cave - Bottom Left", False, [], ['Moon Pearl']], + ["Hookshot Cave - Bottom Left", False, [], ['Hookshot']], + ["Hookshot Cave - Bottom Left", True, ['Moon Pearl', 'Pegasus Boots', 'Hookshot']], + ["Hookshot Cave - Bottom Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Bottom Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + + ["Hookshot Cave - Top Left", False, []], + ["Hookshot Cave - Top Left", False, [], ['Progressive Glove', 'Pegasus Boots']], + ["Hookshot Cave - Top Left", False, [], ['Moon Pearl']], + ["Hookshot Cave - Top Left", False, [], ['Hookshot']], + ["Hookshot Cave - Top Left", True, ['Moon Pearl', 'Pegasus Boots', 'Hookshot']], + ["Hookshot Cave - Top Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Top Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + + ["Hookshot Cave - Top Right", False, []], + ["Hookshot Cave - Top Right", False, [], ['Progressive Glove', 'Pegasus Boots']], + ["Hookshot Cave - Top Right", False, [], ['Moon Pearl']], + ["Hookshot Cave - Top Right", False, [], ['Hookshot']], + ["Hookshot Cave - Top Right", True, ['Moon Pearl', 'Pegasus Boots', 'Hookshot']], + ["Hookshot Cave - Top Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Top Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ]) \ No newline at end of file diff --git a/test/owg/TestDungeons.py b/test/owg/TestDungeons.py new file mode 100644 index 00000000..7aba1082 --- /dev/null +++ b/test/owg/TestDungeons.py @@ -0,0 +1,132 @@ +from test.owg.TestVanillaOWG import TestVanillaOWG + + +class TestDungeons(TestVanillaOWG): + + def testFirstDungeonChests(self): + self.run_location_tests([ + ["Hyrule Castle - Map Chest", True, []], + + ["Sanctuary", True, []], + + ["Sewers - Secret Room - Left", False, []], + ["Sewers - Secret Room - Left", True, ['Progressive Glove']], + ["Sewers - Secret Room - Left", True, ['Lamp', 'Small Key (Escape)']], + + ["Eastern Palace - Compass Chest", True, []], + + ["Desert Palace - Map Chest", False, []], + ["Desert Palace - Map Chest", True, ['Pegasus Boots']], + ["Desert Palace - Map Chest", True, ['Book of Mudora']], + ["Desert Palace - Map Chest", True, ['Ocarina', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror']], + + ["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", True, ['Progressive Sword', 'Small Key (Desert Palace)', 'Pegasus Boots', 'Lamp', 'Big Key (Desert Palace)']], + ["Desert Palace - Boss", True, ['Small Key (Desert Palace)', 'Pegasus Boots', 'Fire Rod', 'Big Key (Desert Palace)']], + + ["Tower of Hera - Basement Cage", False, []], + ["Tower of Hera - Basement Cage", False, [], ['Pegasus Boots', "Ocarina", "Progressive Glove"]], + ["Tower of Hera - Basement Cage", False, [], ['Pegasus Boots', "Ocarina", "Lamp"]], + ["Tower of Hera - Basement Cage", False, [], ['Pegasus Boots', "Magic Mirror", "Hammer"]], + ["Tower of Hera - Basement Cage", False, [], ['Pegasus Boots', "Magic Mirror", "Hookshot"]], + ["Tower of Hera - Basement Cage", True, ['Pegasus Boots']], + ["Tower of Hera - Basement Cage", True, ["Ocarina", "Magic Mirror"]], + ["Tower of Hera - Basement Cage", True, ["Progressive Glove", "Lamp", "Magic Mirror"]], + ["Tower of Hera - Basement Cage", True, ["Ocarina", "Hookshot", "Hammer"]], + ["Tower of Hera - Basement Cage", True, ["Progressive Glove", "Lamp", "Magic Mirror"]], + + ["Castle Tower - Room 03", False, []], + ["Castle Tower - Room 03", False, ['Progressive Sword'], ['Progressive Sword', 'Cape', 'Beat Agahnim 1']], + ["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', 'Progressive Sword']], + ["Castle Tower - Room 03", True, ['Cape', 'Progressive Bow']], + ["Castle Tower - Room 03", True, ['Beat Agahnim 1', 'Fire Rod']], + + ["Palace of Darkness - Shooter Room", False, []], + ["Palace of Darkness - Shooter Room", False, [], ['Moon Pearl']], + ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Pegasus Boots']], + ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Beat Agahnim 1']], + ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Hammer', 'Progressive Glove']], + #todo: Qirn jump in logic? + #["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Flippers']], + + ["Swamp Palace - Entrance", False, []], + ["Swamp Palace - Entrance", False, [], ['Magic Mirror']], + ["Swamp Palace - Entrance", False, [], ['Moon Pearl']], + ["Swamp Palace - Entrance", False, [], ['Flippers']], + ["Swamp Palace - Entrance", True, ['Magic Mirror', 'Moon Pearl', 'Flippers', 'Pegasus Boots']], + ["Swamp Palace - Entrance", True, ['Magic Mirror', 'Moon Pearl', 'Flippers', 'Ocarina']], + ["Swamp Palace - Entrance", True, ['Magic Mirror', 'Moon Pearl', 'Flippers', 'Hammer', 'Progressive Glove']], + ["Swamp Palace - Entrance", True, ['Magic Mirror', 'Moon Pearl', 'Flippers', 'Progressive Glove', 'Progressive Glove']], + + ["Skull Woods - Compass Chest", False, []], + ["Skull Woods - Compass Chest", True, ['Magic Mirror', 'Pegasus Boots']], + ["Skull Woods - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Skull Woods - Big Chest", False, []], + ["Skull Woods - Big Chest", False, [], ['Big Key (Skull Woods)']], + #todo: Bomb Jump in logic? + #["Skull Woods - Big Chest", True, ['Magic Mirror', 'Pegasus Boots', 'Big Key (Skull Woods)']], + ["Skull Woods - Big Chest", True, ['Moon Pearl', 'Pegasus Boots', 'Big Key (Skull Woods)']], + + ["Skull Woods - Big Key Chest", False, []], + ["Skull Woods - Big Key Chest", True, ['Magic Mirror', 'Pegasus Boots']], + ["Skull Woods - Big Key Chest", True, ['Moon Pearl', 'Pegasus Boots']], + + ["Skull Woods - Bridge Room", False, []], + ["Skull Woods - Bridge Room", False, [], ['Moon Pearl']], + ["Skull Woods - Bridge Room", False, [], ['Fire Rod']], + ["Skull Woods - Bridge Room", True, ['Moon Pearl', 'Pegasus Boots', 'Fire Rod']], + + ["Thieves' Town - Map Chest", False, []], + ["Thieves' Town - Map Chest", False, [], ['Moon Pearl']], + ["Thieves' Town - Map Chest", True, ['Moon Pearl', 'Pegasus Boots']], + + ["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", False, ['Progressive Glove'], ['Progressive Glove']], + #["Ice Palace - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots', 'Flippers', 'Fire Rod']], + #["Ice Palace - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots', 'Flippers', 'Bombos', 'Progressive Sword']], + ["Ice Palace - Compass Chest", True, ['Progressive Glove', 'Progressive Glove', 'Fire Rod']], + ["Ice Palace - Compass Chest", True, ['Progressive Glove', 'Progressive Glove', 'Bombos', 'Progressive Sword']], + + ["Misery Mire - Bridge Chest", False, []], + ["Misery Mire - Bridge Chest", False, [], ['Moon Pearl']], + ["Misery Mire - Bridge Chest", False, [], ['Ether']], + ["Misery Mire - Bridge Chest", False, [], ['Progressive Sword']], + ["Misery Mire - Bridge Chest", True, ['Moon Pearl', 'Pegasus Boots', 'Ether', 'Progressive Sword']], + + ["Turtle Rock - Compass Chest", False, []], + ["Turtle Rock - Compass Chest", False, [], ['Cane of Somaria']], + #todo: does clip require sword? + #["Turtle Rock - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots', 'Cane of Somaria', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)']], + ["Turtle Rock - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots', 'Cane of Somaria', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Progressive Sword']], + ["Turtle Rock - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots', 'Cane of Somaria', 'Progressive Sword', 'Quake', 'Hammer']], + ["Turtle Rock - Compass Chest", True, ['Pegasus Boots', 'Magic Mirror', 'Hammer', 'Cane of Somaria', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)']], + + ["Turtle Rock - Chain Chomps", False, []], + #todo: does clip require sword? + #["Turtle Rock - Chain Chomps", True, ['Moon Pearl', 'Pegasus Boots']], + ["Turtle Rock - Chain Chomps", True, ['Moon Pearl', 'Pegasus Boots', 'Progressive Sword']], + ["Turtle Rock - Chain Chomps", True, ['Pegasus Boots', 'Magic Mirror', 'Hammer']], + ["Turtle Rock - Chain Chomps", True, ['Pegasus Boots', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + + ["Turtle Rock - Crystaroller Room", False, []], + ["Turtle Rock - Crystaroller Room", False, [], ['Big Key (Turtle Rock)']], + #todo: does clip require sword? + #["Turtle Rock - Crystaroller Room", True, ['Moon Pearl', 'Pegasus Boots', 'Big Key (Turtle Rock)']], + ["Turtle Rock - Crystaroller Room", True, ['Moon Pearl', 'Pegasus Boots', 'Big Key (Turtle Rock)', 'Progressive Sword']], + ["Turtle Rock - Crystaroller Room", True, ['Moon Pearl', 'Pegasus Boots', 'Big Key (Turtle Rock)', 'Hookshot']], + ["Turtle Rock - Crystaroller Room", True, ['Pegasus Boots', 'Magic Mirror', 'Hammer', 'Big Key (Turtle Rock)']], + + ["Ganons Tower - Hope Room - Left", False, []], + ["Ganons Tower - Hope Room - Left", False, ['Moon Pearl', 'Crystal 1']], + ["Ganons Tower - Hope Room - Left", False, ['Pegasus Boots', 'Crystal 1']], + ["Ganons Tower - Hope Room - Left", True, ['Moon Pearl', 'Pegasus Boots']], + ["Ganons Tower - Hope Room - Left", True, ['Pegasus Boots', 'Hammer', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7']], + ]) \ No newline at end of file diff --git a/test/owg/TestLightWorld.py b/test/owg/TestLightWorld.py new file mode 100644 index 00000000..02ea2f3b --- /dev/null +++ b/test/owg/TestLightWorld.py @@ -0,0 +1,194 @@ +from test.owg.TestVanillaOWG import TestVanillaOWG + + +class TestLightWorld(TestVanillaOWG): + + def testLightWorld(self): + self.run_location_tests([ + ["Master Sword Pedestal", False, []], + ["Master Sword Pedestal", False, [], ['Green Pendant']], + ["Master Sword Pedestal", False, [], ['Red Pendant']], + ["Master Sword Pedestal", False, [], ['Blue Pendant']], + ["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant']], + + ["Link's Uncle", True, []], + + ["Secret Passage", True, []], + + ["King's Tomb", False, []], + ["King's Tomb", False, [], ['Pegasus Boots']], + ["King's Tomb", True, ['Pegasus Boots']], + + ["Floodgate Chest", True, []], + + ["Link's House", True, []], + + ["Kakariko Tavern", True, []], + + ["Chicken House", True, []], + + ["Aginah's Cave", True, []], + + ["Sahasrahla's Hut - Left", True, []], + + ["Sahasrahla's Hut - Middle", True, []], + + ["Sahasrahla's Hut - Right", True, []], + + ["Kakariko Well - Top", True, []], + + ["Kakariko Well - Left", True, []], + + ["Kakariko Well - Middle", True, []], + + ["Kakariko Well - Right", True, []], + + ["Kakariko Well - Bottom", True, []], + + ["Blind's Hideout - Top", True, []], + + ["Blind's Hideout - Left", True, []], + + ["Blind's Hideout - Right", True, []], + + ["Blind's Hideout - Far Left", True, []], + + ["Blind's Hideout - Far Right", True, []], + + ["Bonk Rock Cave", False, []], + ["Bonk Rock Cave", False, [], ['Pegasus Boots']], + ["Bonk Rock Cave", True, ['Pegasus Boots']], + + ["Mini Moldorm Cave - Far Left", True, []], + + ["Mini Moldorm Cave - Left", True, []], + + ["Mini Moldorm Cave - Right", True, []], + + ["Mini Moldorm Cave - Far Right", True, []], + + ["Ice Rod Cave", True, []], + + ["Bottle Merchant", True, []], + + ["Sahasrahla", False, []], + ["Sahasrahla", False, [], ['Green Pendant']], + ["Sahasrahla", True, ['Green Pendant']], + + ["Magic Bat", False, []], + ["Magic Bat", False, [], ['Magic Powder']], + ["Magic Bat", False, [], ['Pegasus Boots', 'Hammer', 'Magic Mirror']], + ["Magic Bat", False, [], ['Pegasus Boots', 'Hammer', 'Moon Pearl']], + ["Magic Bat", False, ['Progressive Glove'], ['Pegasus Boots', 'Hammer', 'Progressive Glove']], + ["Magic Bat", True, ['Magic Powder', 'Pegasus Boots']], + ["Magic Bat", True, ['Magic Powder', 'Hammer']], + ["Magic Bat", True, ['Magic Powder', 'Progressive Glove', 'Progressive Glove', 'Moon Pearl', 'Magic Mirror']], + + ["Sick Kid", False, []], + ["Sick Kid", False, [], ['AnyBottle']], + ["Sick Kid", True, ['Bottle (Bee)']], + ["Sick Kid", True, ['Bottle (Fairy)']], + ["Sick Kid", True, ['Bottle (Red Potion)']], + ["Sick Kid", True, ['Bottle (Green Potion)']], + ["Sick Kid", True, ['Bottle (Blue Potion)']], + ["Sick Kid", True, ['Bottle']], + ["Sick Kid", True, ['Bottle (Good Bee)']], + + ["Hobo", True, []], + + ["Bombos Tablet", False, []], + ["Bombos Tablet", False, ['Progressive Sword'], ['Progressive Sword']], + ["Bombos Tablet", False, [], ['Book of Mudora']], + ["Bombos Tablet", True, ['Pegasus Boots', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + + ["King Zora", True, []], + + ["Lost Woods Hideout", True, []], + + ["Lumberjack Tree", False, []], + ["Lumberjack Tree", False, [], ['Pegasus Boots']], + ["Lumberjack Tree", False, [], ['Beat Agahnim 1']], + ["Lumberjack Tree", True, ['Pegasus Boots', 'Beat Agahnim 1']], + + ["Cave 45", False, []], + ["Cave 45", False, [], ['Pegasus Boots', 'Magic Mirror']], + ["Cave 45", False, [], ['Pegasus Boots', 'Moon Pearl', 'Ocarina', 'Lamp']], + ["Cave 45", False, [], ['Pegasus Boots', 'Moon Pearl', 'Ocarina', 'Progressive Glove']], + ["Cave 45", True, ['Pegasus Boots']], + ["Cave 45", True, ['Ocarina', 'Magic Mirror']], + ["Cave 45", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Hammer']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Hammer']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Graveyard Cave", False, []], + ["Graveyard Cave", False, [], ['Pegasus Boots', 'Magic Mirror']], + ["Graveyard Cave", False, [], ['Pegasus Boots', 'Moon Pearl']], + ["Graveyard Cave", True, ['Pegasus Boots']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Hammer']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Hammer', 'Hookshot']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Checkerboard Cave", False, []], + ["Checkerboard Cave", False, [], ['Progressive Glove']], + ["Checkerboard Cave", False, [], ['Pegasus Boots', 'Ocarina']], + ["Checkerboard Cave", False, [], ['Pegasus Boots', 'Magic Mirror']], + ["Checkerboard Cave", True, ['Pegasus Boots', 'Progressive Glove']], + ["Checkerboard Cave", True, ['Ocarina', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + + ["Mini Moldorm Cave - Generous Guy", True, []], + + ["Library", False, []], + ["Library", False, [], ['Pegasus Boots']], + ["Library", True, ['Pegasus Boots']], + + ["Mushroom", True, []], + + ["Potion Shop", False, []], + ["Potion Shop", False, [], ['Mushroom']], + ["Potion Shop", True, ['Mushroom']], + + ["Maze Race", True, []], + + ["Desert Ledge", False, []], + ["Desert Ledge", False, [], ['Pegasus Boots', 'Book of Mudora', 'Ocarina']], + ["Desert Ledge", False, [], ['Pegasus Boots', 'Book of Mudora', 'Magic Mirror']], + ["Desert Ledge", False, ['Progressive Glove'], ['Pegasus Boots', 'Book of Mudora', 'Progressive Glove']], + ["Desert Ledge", True, ['Pegasus Boots']], + ["Desert Ledge", True, ['Book of Mudora']], + ["Desert Ledge", True, ['Ocarina', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + + ["Lake Hylia Island", False, []], + ["Lake Hylia Island", False, [], ['Pegasus Boots', 'Magic Mirror']], + ["Lake Hylia Island", False, [], ['Pegasus Boots', 'Moon Pearl']], + ["Lake Hylia Island", False, [], ['Pegasus Boots', 'Flippers']], + ["Lake Hylia Island", True, ['Pegasus Boots']], + ["Lake Hylia Island", True, ['Flippers', 'Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + ["Lake Hylia Island", True, ['Flippers', 'Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Hammer']], + ["Lake Hylia Island", True, ['Flippers', 'Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1']], + + ["Sunken Treasure", True, []], + + ["Zora's Ledge", False, []], + ["Zora's Ledge", False, [], ['Pegasus Boots', 'Flippers']], + ["Zora's Ledge", True, ['Pegasus Boots']], + ["Zora's Ledge", True, ['Flippers']], + + ["Flute Spot", False, []], + ["Flute Spot", False, [], ['Shovel']], + ["Flute Spot", True, ['Shovel']], + + ["Waterfall Fairy - Left", False, []], + ["Waterfall Fairy - Left", True, ['Flippers']], + ["Waterfall Fairy - Left", True, ['Moon Pearl']], + ["Waterfall Fairy - Left", True, ['Pegasus Boots']], + + ["Waterfall Fairy - Right", False, []], + ["Waterfall Fairy - Right", True, ['Flippers']], + ["Waterfall Fairy - Right", True, ['Moon Pearl']], + ["Waterfall Fairy - Right", True, ['Pegasus Boots']] + ]) \ No newline at end of file diff --git a/test/owg/TestVanillaOWG.py b/test/owg/TestVanillaOWG.py new file mode 100644 index 00000000..977f8790 --- /dev/null +++ b/test/owg/TestVanillaOWG.py @@ -0,0 +1,29 @@ +from BaseClasses import World +from Dungeons import create_dungeons, get_dungeon_item_pool +from EntranceShuffle import link_entrances +from InvertedRegions import mark_dark_world_regions +from ItemList import difficulties, generate_itempool +from Items import ItemFactory +from Regions import create_regions +from Rules import set_rules +from test.TestBase import TestBase + + +class TestVanillaOWG(TestBase): + def setUp(self): + self.world = World(1, 'vanilla', 'owglitches', 'open', 'random', 'normal', 'normal', 'none', 'on', 'ganon', 'balanced', True, 'items', + True, False, False, False, False, False, False, None, 'none', False) + self.world.difficulty_requirements = difficulties['normal'] + create_regions(self.world, 1) + create_dungeons(self.world, 1) + link_entrances(self.world, 1) + generate_itempool(self.world, 1) + self.world.required_medallions[1] = ['Ether', 'Quake'] + self.world.itempool.extend(get_dungeon_item_pool(self.world)) + self.world.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)) + self.world.get_location('Agahnim 1', 1).item = None + self.world.get_location('Agahnim 2', 1).item = None + self.world.precollected_items.clear() + self.world.itempool.append(ItemFactory('Pegasus Boots', 1)) + mark_dark_world_regions(self.world) + set_rules(self.world, 1) \ No newline at end of file diff --git a/test/owg/__init__.py b/test/owg/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/vanilla/TestDarkWorld.py b/test/vanilla/TestDarkWorld.py new file mode 100644 index 00000000..b5c331c7 --- /dev/null +++ b/test/vanilla/TestDarkWorld.py @@ -0,0 +1,166 @@ +from test.vanilla.TestVanilla import TestVanilla + + +class TestDarkWorld(TestVanilla): + + def testSouthDarkWorld(self): + self.run_location_tests([ + ["Hype Cave - Top", False, []], + ["Hype Cave - Top", False, [], ['Moon Pearl']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Top", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Middle Right", False, []], + ["Hype Cave - Middle Right", False, [], ['Moon Pearl']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Middle Right", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Middle Left", False, []], + ["Hype Cave - Middle Left", False, [], ['Moon Pearl']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Middle Left", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Bottom", False, []], + ["Hype Cave - Bottom", False, [], ['Moon Pearl']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Bottom", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Hype Cave - Generous Guy", False, []], + ["Hype Cave - Generous Guy", False, [], ['Moon Pearl']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Hype Cave - Generous Guy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Stumpy", False, []], + ["Stumpy", False, [], ['Moon Pearl']], + ["Stumpy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Stumpy", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Stumpy", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Stumpy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Stumpy", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Digging Game", False, []], + ["Digging Game", False, [], ['Moon Pearl']], + ["Digging Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Hammer']], + ["Digging Game", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Digging Game", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Digging Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Digging Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']] + ]) + + def testWestDarkWorld(self): + self.run_location_tests([ + ["Brewery", False, []], + ["Brewery", False, [], ['Moon Pearl']], + ["Brewery", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Brewery", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Brewery", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Brewery", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["C-Shaped House", False, []], + ["C-Shaped House", False, [], ['Moon Pearl']], + ["C-Shaped House", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["C-Shaped House", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["C-Shaped House", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["C-Shaped House", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Chest Game", False, []], + ["Chest Game", False, [], ['Moon Pearl']], + ["Chest Game", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + ["Chest Game", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Chest Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Chest Game", True, ['Moon Pearl', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Peg Cave", False, []], + ["Peg Cave", False, [], ['Moon Pearl']], + ["Peg Cave", False, [], ['Hammer']], + ["Peg Cave", False, [], ['Progressive Glove']], + ["Peg Cave", True, ['Moon Pearl', 'Hammer', 'Progressive Glove', 'Progressive Glove']], + + ["Bumper Cave Ledge", False, []], + ["Bumper Cave Ledge", False, [], ['Moon Pearl']], + ["Bumper Cave Ledge", False, [], ['Cape']], + ["Bumper Cave Ledge", False, [], ['Progressive Glove']], + ["Bumper Cave Ledge", True, ['Moon Pearl', 'Cape', 'Progressive Glove', 'Progressive Glove']], + ["Bumper Cave Ledge", True, ['Moon Pearl', 'Cape', 'Progressive Glove', 'Hammer']], + ["Bumper Cave Ledge", True, ['Moon Pearl', 'Cape', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + + ["Blacksmith", False, []], + ["Blacksmith", False, [], ['Progressive Glove']], + ["Blacksmith", False, [], ['Moon Pearl']], + ["Blacksmith", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], + + ["Purple Chest", False, []], + ["Purple Chest", False, [], ['Progressive Glove']], + ["Purple Chest", False, [], ['Moon Pearl']], + ["Purple Chest", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']] + ]) + + def testEastDarkWorld(self): + self.run_location_tests([ + ["Catfish", False, []], + ["Catfish", False, [], ['Progressive Glove']], + ["Catfish", False, [], ['Moon Pearl']], + ["Catfish", True, ['Moon Pearl', 'Beat Agahnim 1', 'Progressive Glove']], + ["Catfish", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Catfish", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Flippers']], + + ["Pyramid", False, []], + ["Pyramid", False, [], ['Beat Agahnim 1', 'Moon Pearl']], + ["Pyramid", True, ['Beat Agahnim 1']], + ["Pyramid", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']], + ["Pyramid", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Flippers']], + + ["Pyramid Fairy - Left", False, []], + ["Pyramid Fairy - Left", False, [], ['Moon Pearl']], + ["Pyramid Fairy - Left", False, [], ['Crystal 5']], + ["Pyramid Fairy - Left", False, [], ['Crystal 6']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Hammer']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Progressive Glove', 'Hammer']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot', 'Magic Mirror']], + ["Pyramid Fairy - Left", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Flippers', 'Hookshot', 'Magic Mirror']], + + ["Pyramid Fairy - Right", False, []], + ["Pyramid Fairy - Right", False, [], ['Moon Pearl']], + ["Pyramid Fairy - Right", False, [], ['Crystal 5']], + ["Pyramid Fairy - Right", False, [], ['Crystal 6']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Hammer']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Progressive Glove', 'Hammer']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot', 'Magic Mirror']], + ["Pyramid Fairy - Right", True, ['Moon Pearl', 'Crystal 5', 'Crystal 6', 'Beat Agahnim 1', 'Flippers', 'Hookshot', 'Magic Mirror']], + + ["Ganon", False, []], + ["Ganon", False, [], ['Moon Pearl']], + ["Ganon", False, [], ['Beat Agahnim 2']], + ]) + + def testMireArea(self): + self.run_location_tests([ + ["Mire Shed - Left", False, []], + ["Mire Shed - Left", False, [], ['Progressive Glove']], + ["Mire Shed - Left", False, [], ['Moon Pearl']], + ["Mire Shed - Left", False, [], ['Ocarina']], + ["Mire Shed - Left", True, ['Moon Pearl', 'Ocarina', 'Progressive Glove', 'Progressive Glove']], + + ["Mire Shed - Right", False, []], + ["Mire Shed - Right", False, [], ['Progressive Glove']], + ["Mire Shed - Right", False, [], ['Moon Pearl']], + ["Mire Shed - Right", False, [], ['Ocarina']], + ["Mire Shed - Right", True, ['Moon Pearl', 'Ocarina', 'Progressive Glove', 'Progressive Glove']], + ]) diff --git a/test/vanilla/TestDeathMountain.py b/test/vanilla/TestDeathMountain.py new file mode 100644 index 00000000..cac104d0 --- /dev/null +++ b/test/vanilla/TestDeathMountain.py @@ -0,0 +1,230 @@ +from test.vanilla.TestVanilla import TestVanilla + + +class TestDeathMountain(TestVanilla): + + def testWestDeathMountain(self): + self.run_location_tests([ + ["Ether Tablet", False, []], + ["Ether Tablet", False, [], ['Progressive Glove', 'Ocarina']], + ["Ether Tablet", False, [], ['Lamp', 'Ocarina']], + ["Ether Tablet", False, [], ['Magic Mirror', 'Hookshot']], + ["Ether Tablet", False, [], ['Magic Mirror', 'Hammer']], + ["Ether Tablet", False, ['Progressive Sword'], ['Progressive Sword']], + ["Ether Tablet", False, [], ['Book of Mudora']], + ["Ether Tablet", True, ['Ocarina', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + ["Ether Tablet", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + ["Ether Tablet", True, ['Ocarina', 'Hammer', 'Hookshot', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + ["Ether Tablet", True, ['Progressive Glove', 'Lamp', 'Hammer', 'Hookshot', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']], + + ["Old Man", False, []], + ["Old Man", False, [], ['Progressive Glove', 'Ocarina']], + ["Old Man", False, [], ['Lamp']], + ["Old Man", True, ['Ocarina', 'Lamp']], + ["Old Man", True, ['Progressive Glove', 'Lamp']], + + ["Spectacle Rock Cave", False, []], + ["Spectacle Rock Cave", False, [], ['Progressive Glove', 'Ocarina']], + ["Spectacle Rock Cave", False, [], ['Lamp', 'Ocarina']], + ["Spectacle Rock Cave", True, ['Ocarina']], + ["Spectacle Rock Cave", True, ['Progressive Glove', 'Lamp']], + + ["Spectacle Rock", False, []], + ["Spectacle Rock", False, [], ['Progressive Glove', 'Ocarina']], + ["Spectacle Rock", False, [], ['Lamp', 'Ocarina']], + ["Spectacle Rock", False, [], ['Magic Mirror']], + ["Spectacle Rock", True, ['Ocarina', 'Magic Mirror']], + ["Spectacle Rock", True, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ]) + + def testEastDeathMountain(self): + self.run_location_tests([ + ["Mimic Cave", False, []], + ["Mimic Cave", False, [], ['Quake']], + ["Mimic Cave", False, [], ['Progressive Sword']], + ["Mimic Cave", False, ['Progressive Glove'], ['Progressive Glove']], + ["Mimic Cave", False, [], ['Hammer']], + ["Mimic Cave", False, [], ['Magic Mirror']], + ["Mimic Cave", False, [], ['Moon Pearl']], + ["Mimic Cave", False, [], ['Cane of Somaria']], + ["Mimic Cave", False, ['Small Key (Turtle Rock)'], ['Small Key (Turtle Rock)']], + ["Mimic Cave", True, ['Quake', 'Progressive Sword', 'Ocarina', 'Progressive Glove', 'Progressive Glove', 'Hammer', 'Moon Pearl', 'Cane of Somaria', 'Magic Mirror', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)']], + + ["Spiral Cave", False, []], + ["Spiral Cave", False, [], ['Progressive Glove', 'Ocarina']], + ["Spiral Cave", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Spiral Cave", False, [], ['Magic Mirror', 'Hookshot']], + ["Spiral Cave", False, [], ['Hammer', 'Hookshot']], + ["Spiral Cave", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Spiral Cave", False, ['Progressive Glove', 'Hookshot']], + ["Spiral Cave", False, ['Ocarina', 'Magic Mirror']], + ["Spiral Cave", False, ['Ocarina', 'Hammer']], + ["Spiral Cave", True, ['Ocarina', 'Hookshot']], + ["Spiral Cave", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Spiral Cave", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Spiral Cave", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + + ["Paradox Cave Lower - Far Left", False, []], + ["Paradox Cave Lower - Far Left", False, [], ['Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Far Left", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Paradox Cave Lower - Far Left", False, [], ['Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Far Left", False, [], ['Hammer', 'Hookshot']], + ["Paradox Cave Lower - Far Left", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Far Left", False, ['Progressive Glove', 'Hookshot']], + ["Paradox Cave Lower - Far Left", False, ['Ocarina', 'Magic Mirror']], + ["Paradox Cave Lower - Far Left", False, ['Ocarina', 'Hammer']], + ["Paradox Cave Lower - Far Left", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Far Left", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Far Left", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Paradox Cave Lower - Far Left", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + + ["Paradox Cave Lower - Left", False, []], + ["Paradox Cave Lower - Left", False, [], ['Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Left", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Paradox Cave Lower - Left", False, [], ['Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Left", False, [], ['Hammer', 'Hookshot']], + ["Paradox Cave Lower - Left", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Left", False, ['Progressive Glove', 'Hookshot']], + ["Paradox Cave Lower - Left", False, ['Ocarina', 'Magic Mirror']], + ["Paradox Cave Lower - Left", False, ['Ocarina', 'Hammer']], + ["Paradox Cave Lower - Left", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Left", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Left", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Paradox Cave Lower - Left", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + + ["Paradox Cave Lower - Middle", False, []], + ["Paradox Cave Lower - Middle", False, [], ['Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Middle", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Paradox Cave Lower - Middle", False, [], ['Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Middle", False, [], ['Hammer', 'Hookshot']], + ["Paradox Cave Lower - Middle", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Middle", False, ['Progressive Glove', 'Hookshot']], + ["Paradox Cave Lower - Middle", False, ['Ocarina', 'Magic Mirror']], + ["Paradox Cave Lower - Middle", False, ['Ocarina', 'Hammer']], + ["Paradox Cave Lower - Middle", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Middle", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Middle", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Paradox Cave Lower - Middle", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + + ["Paradox Cave Lower - Right", False, []], + ["Paradox Cave Lower - Right", False, [], ['Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Right", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Paradox Cave Lower - Right", False, [], ['Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Right", False, [], ['Hammer', 'Hookshot']], + ["Paradox Cave Lower - Right", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Right", False, ['Progressive Glove', 'Hookshot']], + ["Paradox Cave Lower - Right", False, ['Ocarina', 'Magic Mirror']], + ["Paradox Cave Lower - Right", False, ['Ocarina', 'Hammer']], + ["Paradox Cave Lower - Right", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Right", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Right", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Paradox Cave Lower - Right", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + + ["Paradox Cave Lower - Far Right", False, []], + ["Paradox Cave Lower - Far Right", False, [], ['Progressive Glove', 'Ocarina']], + ["Paradox Cave Lower - Far Right", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Paradox Cave Lower - Far Right", False, [], ['Magic Mirror', 'Hookshot']], + ["Paradox Cave Lower - Far Right", False, [], ['Hammer', 'Hookshot']], + ["Paradox Cave Lower - Far Right", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Lower - Far Right", False, ['Progressive Glove', 'Hookshot']], + ["Paradox Cave Lower - Far Right", False, ['Ocarina', 'Magic Mirror']], + ["Paradox Cave Lower - Far Right", False, ['Ocarina', 'Hammer']], + ["Paradox Cave Lower - Far Right", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Lower - Far Right", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Lower - Far Right", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Paradox Cave Lower - Far Right", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + + ["Paradox Cave Upper - Left", False, []], + ["Paradox Cave Upper - Left", False, [], ['Progressive Glove', 'Ocarina']], + ["Paradox Cave Upper - Left", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Paradox Cave Upper - Left", False, [], ['Magic Mirror', 'Hookshot']], + ["Paradox Cave Upper - Left", False, [], ['Hammer', 'Hookshot']], + ["Paradox Cave Upper - Left", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Upper - Left", False, ['Progressive Glove', 'Hookshot']], + ["Paradox Cave Upper - Left", False, ['Ocarina', 'Magic Mirror']], + ["Paradox Cave Upper - Left", False, ['Ocarina', 'Hammer']], + ["Paradox Cave Upper - Left", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Upper - Left", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Upper - Left", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Paradox Cave Upper - Left", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + + ["Paradox Cave Upper - Right", False, []], + ["Paradox Cave Upper - Right", False, [], ['Progressive Glove', 'Ocarina']], + ["Paradox Cave Upper - Right", False, [], ['Magic Mirror', 'Hammer', 'Hookshot']], + ["Paradox Cave Upper - Right", False, [], ['Magic Mirror', 'Hookshot']], + ["Paradox Cave Upper - Right", False, [], ['Hammer', 'Hookshot']], + ["Paradox Cave Upper - Right", False, ['Progressive Glove', 'Lamp', 'Magic Mirror']], + ["Paradox Cave Upper - Right", False, ['Progressive Glove', 'Hookshot']], + ["Paradox Cave Upper - Right", False, ['Ocarina', 'Magic Mirror']], + ["Paradox Cave Upper - Right", False, ['Ocarina', 'Hammer']], + ["Paradox Cave Upper - Right", True, ['Ocarina', 'Hookshot']], + ["Paradox Cave Upper - Right", True, ['Progressive Glove', 'Lamp', 'Hookshot']], + ["Paradox Cave Upper - Right", True, ['Progressive Glove', 'Lamp', 'Magic Mirror', 'Hammer']], + ["Paradox Cave Upper - Right", True, ['Ocarina', 'Magic Mirror', 'Hammer']], + ]) + + def testWestDarkWorldDeathMountain(self): + self.run_location_tests([ + ["Spike Cave", False, []], + ["Spike Cave", False, [], ['Progressive Glove']], + ["Spike Cave", False, [], ['Moon Pearl']], + ["Spike Cave", False, [], ['Hammer']], + ["Spike Cave", False, [], ['Cape', 'Cane of Byrna']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cape']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']], + ["Spike Cave", True, ['Bottle', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/2)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cape']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']], + ["Spike Cave", True, ['Magic Upgrade (1/4)', 'Moon Pearl', 'Hammer', 'Progressive Glove', 'Ocarina', 'Cane of Byrna']], + ]) + + def testEastDarkWorldDeathMountain(self): + self.run_location_tests([ + ["Superbunny Cave - Top", False, []], + ["Superbunny Cave - Top", False, [], ['Progressive Glove']], + ["Superbunny Cave - Top", False, [], ['Moon Pearl']], + ["Superbunny Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Superbunny Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Ocarina']], + ["Superbunny Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ["Superbunny Cave - Top", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Lamp']], + + ["Superbunny Cave - Bottom", False, []], + ["Superbunny Cave - Bottom", False, [], ['Progressive Glove']], + ["Superbunny Cave - Bottom", False, [], ['Moon Pearl']], + ["Superbunny Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Superbunny Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Ocarina']], + ["Superbunny Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ["Superbunny Cave - Bottom", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Lamp']], + + ["Hookshot Cave - Bottom Right", False, []], + ["Hookshot Cave - Bottom Right", False, [], ['Progressive Glove']], + ["Hookshot Cave - Bottom Right", False, [], ['Moon Pearl']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Ocarina', 'Pegasus Boots']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ["Hookshot Cave - Bottom Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Magic Mirror', 'Hammer', 'Lamp', 'Pegasus Boots']], + + ["Hookshot Cave - Bottom Left", False, []], + ["Hookshot Cave - Bottom Left", False, [], ['Progressive Glove']], + ["Hookshot Cave - Bottom Left", False, [], ['Moon Pearl']], + ["Hookshot Cave - Bottom Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Bottom Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + + ["Hookshot Cave - Top Left", False, []], + ["Hookshot Cave - Top Left", False, [], ['Progressive Glove']], + ["Hookshot Cave - Top Left", False, [], ['Moon Pearl']], + ["Hookshot Cave - Top Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Top Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + + ["Hookshot Cave - Top Right", False, []], + ["Hookshot Cave - Top Right", False, [], ['Progressive Glove']], + ["Hookshot Cave - Top Right", False, [], ['Moon Pearl']], + ["Hookshot Cave - Top Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Ocarina']], + ["Hookshot Cave - Top Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Hookshot', 'Lamp']], + ]) diff --git a/test/vanilla/TestEntrances.py b/test/vanilla/TestEntrances.py new file mode 100644 index 00000000..3be2212c --- /dev/null +++ b/test/vanilla/TestEntrances.py @@ -0,0 +1,133 @@ +from test.vanilla.TestVanilla import TestVanilla + + +class TestEntrances(TestVanilla): + + def testDungeonEntrances(self): + self.run_entrance_tests([ + ["Hyrule Castle Entrance (South)", True, []], + + ["Eastern Palace", True, []], + + ["Desert Palace Entrance (South)", False, []], + ["Desert Palace Entrance (South)", False, [], ["Book of Mudora", "Ocarina"]], + ["Desert Palace Entrance (South)", False, [], ["Book of Mudora", "Magic Mirror"]], + ["Desert Palace Entrance (South)", False, ["Progressive Glove"], ["Book of Mudora", "Progressive Glove"]], + ["Desert Palace Entrance (South)", True, ["Book of Mudora"]], + ["Desert Palace Entrance (South)", True, ["Ocarina", "Progressive Glove", "Progressive Glove", "Magic Mirror"]], + ["Desert Palace Entrance (North)", False, []], + ["Desert Palace Entrance (North)", False, [], ["Progressive Glove"]], + ["Desert Palace Entrance (North)", False, [], ["Book of Mudora", "Ocarina"]], + ["Desert Palace Entrance (North)", False, [], ["Book of Mudora", "Magic Mirror"]], + ["Desert Palace Entrance (North)", True, ["Book of Mudora", "Progressive Glove"]], + ["Desert Palace Entrance (North)", True, ["Ocarina", "Progressive Glove", "Progressive Glove", "Magic Mirror"]], + + ["Tower of Hera", False, []], + ["Tower of Hera", False, [], ["Ocarina", "Progressive Glove"]], + ["Tower of Hera", False, [], ["Ocarina", "Lamp"]], + ["Tower of Hera", False, [], ["Magic Mirror", "Hammer"]], + ["Tower of Hera", False, [], ["Magic Mirror", "Hookshot"]], + ["Tower of Hera", True, ["Ocarina", "Magic Mirror"]], + ["Tower of Hera", True, ["Progressive Glove", "Lamp", "Magic Mirror"]], + ["Tower of Hera", True, ["Ocarina", "Hookshot", "Hammer"]], + ["Tower of Hera", True, ["Progressive Glove", "Lamp", "Magic Mirror"]], + + ["Agahnims Tower", False, []], + ["Agahnims Tower", False, ["Progressive Sword"], ["Cape", "Progressive Sword", "Beat Agahnim 1"]], + ["Agahnims Tower", True, ["Cape"]], + ["Agahnims Tower", True, ["Progressive Sword", "Progressive Sword"]], + ["Agahnims Tower", True, ["Beat Agahnim 1"]], + + ["Palace of Darkness", False, []], + ["Palace of Darkness", False, [], ["Moon Pearl"]], + ["Palace of Darkness", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Palace of Darkness", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Palace of Darkness", False, [], ["Beat Agahnim 1", "Hammer", "Flippers"]], + ["Palace of Darkness", True, ["Beat Agahnim 1", "Moon Pearl"]], + ["Palace of Darkness", True, ["Hammer", "Progressive Glove", "Moon Pearl"]], + ["Palace of Darkness", True, ["Progressive Glove", "Progressive Glove", "Flippers", "Moon Pearl"]], + + ["Swamp Palace", False, []], + ["Swamp Palace", False, [], ["Moon Pearl"]], + ["Swamp Palace", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Swamp Palace", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Swamp Palace", True, ["Beat Agahnim 1", "Moon Pearl", "Hammer"]], + ["Swamp Palace", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Flippers"]], + ["Swamp Palace", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Progressive Glove"]], + ["Swamp Palace", True, ["Hammer", "Progressive Glove", "Moon Pearl"]], + ["Swamp Palace", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl"]], + + ["Thieves Town", False, []], + ["Thieves Town", False, [], ["Moon Pearl"]], + ["Thieves Town", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Thieves Town", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Thieves Town", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Flippers"]], + ["Thieves Town", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Hammer"]], + ["Thieves Town", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Progressive Glove"]], + ["Thieves Town", True, ["Hammer", "Progressive Glove", "Moon Pearl"]], + ["Thieves Town", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl"]], + + ["Skull Woods First Section Door", False, []], + ["Skull Woods First Section Door", False, [], ["Moon Pearl"]], + ["Skull Woods First Section Door", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Skull Woods First Section Door", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Skull Woods First Section Door", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Flippers"]], + ["Skull Woods First Section Door", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Hammer"]], + ["Skull Woods First Section Door", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Progressive Glove"]], + ["Skull Woods First Section Door", True, ["Hammer", "Progressive Glove", "Moon Pearl"]], + ["Skull Woods First Section Door", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl"]], + + ["Skull Woods Final Section", False, []], + ["Skull Woods Final Section", False, [], ["Moon Pearl"]], + ["Skull Woods Final Section", False, [], ["Fire Rod"]], + ["Skull Woods Final Section", False, [], ["Beat Agahnim 1", "Progressive Glove"]], + ["Skull Woods Final Section", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]], + ["Skull Woods Final Section", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Flippers", "Fire Rod"]], + ["Skull Woods Final Section", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Hammer", "Fire Rod"]], + ["Skull Woods Final Section", True, ["Beat Agahnim 1", "Moon Pearl", "Hookshot", "Progressive Glove", "Fire Rod"]], + ["Skull Woods Final Section", True, ["Hammer", "Progressive Glove", "Moon Pearl", "Fire Rod"]], + ["Skull Woods Final Section", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Fire Rod"]], + + ["Ice Palace", False, []], + ["Ice Palace", False, [], ["Flippers"]], + ["Ice Palace", False, ["Progressive Glove"], ["Progressive Glove"]], + ["Ice Palace", True, ["Progressive Glove", "Progressive Glove", "Flippers"]], + + ["Misery Mire", False, []], + ["Misery Mire", False, [], ["Moon Pearl"]], + ["Misery Mire", False, [], ["Ocarina"]], + ["Misery Mire", False, [], ["Ether"]], + ["Misery Mire", False, [], ["Progressive Sword"]], + ["Misery Mire", False, ["Progressive Glove"], ["Progressive Glove"]], + ["Misery Mire", True, ["Progressive Glove", "Progressive Glove", "Ocarina", "Moon Pearl", "Ether", "Progressive Sword"]], + + ["Turtle Rock", False, []], + ["Turtle Rock", False, [], ["Moon Pearl"]], + ["Turtle Rock", False, [], ["Hammer"]], + ["Turtle Rock", False, ["Progressive Glove"], ["Progressive Glove"]], + ["Turtle Rock", False, [], ["Quake"]], + ["Turtle Rock", False, [], ["Progressive Sword"]], + ["Turtle Rock", False, [], ["Lamp", "Ocarina"]], + ["Turtle Rock", False, [], ["Hookshot", "Magic Mirror"]], + ["Turtle Rock", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Hammer", "Quake", "Progressive Sword", "Lamp", "Hookshot"]], + ["Turtle Rock", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Hammer", "Quake", "Progressive Sword", "Lamp", "Magic Mirror"]], + ["Turtle Rock", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Hammer", "Quake", "Progressive Sword", "Ocarina", "Hookshot"]], + ["Turtle Rock", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Hammer", "Quake", "Progressive Sword", "Ocarina", "Magic Mirror"]], + + ["Ganons Tower", False, []], + ["Ganons Tower", False, ["Progressive Glove"], ["Progressive Glove"]], + ["Ganons Tower", False, [], ["Lamp", "Ocarina"]], + ["Ganons Tower", False, [], ["Hookshot", "Hammer"]], + ["Ganons Tower", False, [], ["Hookshot", "Magic Mirror"]], + ["Ganons Tower", False, [], ["Crystal 1"]], + ["Ganons Tower", False, [], ["Crystal 2"]], + ["Ganons Tower", False, [], ["Crystal 3"]], + ["Ganons Tower", False, [], ["Crystal 4"]], + ["Ganons Tower", False, [], ["Crystal 5"]], + ["Ganons Tower", False, [], ["Crystal 6"]], + ["Ganons Tower", False, [], ["Crystal 7"]], + ["Ganons Tower", True, ["Lamp", "Magic Mirror", "Hammer", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]], + ["Ganons Tower", True, ["Lamp", "Hookshot", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]], + ["Ganons Tower", True, ["Ocarina", "Magic Mirror", "Hammer", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]], + ["Ganons Tower", True, ["Ocarina", "Hookshot", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]], + ]) diff --git a/test/vanilla/TestLightWorld.py b/test/vanilla/TestLightWorld.py new file mode 100644 index 00000000..259036c7 --- /dev/null +++ b/test/vanilla/TestLightWorld.py @@ -0,0 +1,197 @@ +from test.vanilla.TestVanilla import TestVanilla + + +class TestLightWorld(TestVanilla): + + def testLightWorld(self): + self.run_location_tests([ + ["Master Sword Pedestal", False, []], + ["Master Sword Pedestal", False, [], ['Green Pendant']], + ["Master Sword Pedestal", False, [], ['Red Pendant']], + ["Master Sword Pedestal", False, [], ['Blue Pendant']], + ["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant']], + + ["Link's Uncle", True, []], + + ["Secret Passage", True, []], + + ["King's Tomb", False, []], + ["King's Tomb", False, [], ['Pegasus Boots']], + ["King's Tomb", True, ['Pegasus Boots', 'Progressive Glove', 'Progressive Glove']], + ["King's Tomb", True, ['Pegasus Boots', 'Progressive Glove', 'Hammer', 'Moon Pearl', 'Magic Mirror']], + ["King's Tomb", True, ['Pegasus Boots', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot', 'Moon Pearl', 'Magic Mirror']], + ["King's Tomb", True, ['Pegasus Boots', 'Beat Agahnim 1', 'Hammer', 'Hookshot', 'Moon Pearl', 'Magic Mirror']], + ["King's Tomb", True, ['Pegasus Boots', 'Beat Agahnim 1', 'Flippers', 'Hookshot', 'Moon Pearl', 'Magic Mirror']], + + ["Floodgate Chest", True, []], + + ["Link's House", True, []], + + ["Kakariko Tavern", True, []], + + ["Chicken House", True, []], + + ["Aginah's Cave", True, []], + + ["Sahasrahla's Hut - Left", True, []], + + ["Sahasrahla's Hut - Middle", True, []], + + ["Sahasrahla's Hut - Right", True, []], + + ["Kakariko Well - Top", True, []], + + ["Kakariko Well - Left", True, []], + + ["Kakariko Well - Middle", True, []], + + ["Kakariko Well - Right", True, []], + + ["Kakariko Well - Bottom", True, []], + + ["Blind's Hideout - Top", True, []], + + ["Blind's Hideout - Left", True, []], + + ["Blind's Hideout - Right", True, []], + + ["Blind's Hideout - Far Left", True, []], + + ["Blind's Hideout - Far Right", True, []], + + ["Bonk Rock Cave", False, []], + ["Bonk Rock Cave", False, [], ['Pegasus Boots']], + ["Bonk Rock Cave", True, ['Pegasus Boots']], + + ["Mini Moldorm Cave - Far Left", True, []], + + ["Mini Moldorm Cave - Left", True, []], + + ["Mini Moldorm Cave - Right", True, []], + + ["Mini Moldorm Cave - Far Right", True, []], + + ["Ice Rod Cave", True, []], + + ["Bottle Merchant", True, []], + + ["Sahasrahla", False, []], + ["Sahasrahla", False, [], ['Green Pendant']], + ["Sahasrahla", True, ['Green Pendant']], + + ["Magic Bat", False, []], + ["Magic Bat", False, [], ['Magic Powder']], + ["Magic Bat", False, [], ['Hammer', 'Magic Mirror']], + ["Magic Bat", False, [], ['Hammer', 'Moon Pearl']], + ["Magic Bat", False, ['Progressive Glove'], ['Hammer', 'Progressive Glove']], + ["Magic Bat", True, ['Magic Powder', 'Hammer']], + ["Magic Bat", True, ['Magic Powder', 'Progressive Glove', 'Progressive Glove', 'Moon Pearl', 'Magic Mirror']], + + ["Sick Kid", False, []], + ["Sick Kid", False, [], ['AnyBottle']], + ["Sick Kid", True, ['Bottle (Bee)']], + ["Sick Kid", True, ['Bottle (Fairy)']], + ["Sick Kid", True, ['Bottle (Red Potion)']], + ["Sick Kid", True, ['Bottle (Green Potion)']], + ["Sick Kid", True, ['Bottle (Blue Potion)']], + ["Sick Kid", True, ['Bottle']], + ["Sick Kid", True, ['Bottle (Good Bee)']], + + ["Hobo", False, []], + ["Hobo", False, [], ['Flippers']], + ["Hobo", True, ['Flippers']], + + ["Bombos Tablet", False, []], + ["Bombos Tablet", False, [], ['Magic Mirror']], + ["Bombos Tablet", False, ['Progressive Sword'], ['Progressive Sword']], + ["Bombos Tablet", False, [], ['Book of Mudora']], + ["Bombos Tablet", False, [], ['Moon Pearl']], + ["Bombos Tablet", True, ['Moon Pearl', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword', 'Progressive Glove', 'Progressive Glove']], + ["Bombos Tablet", True, ['Moon Pearl', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword', 'Progressive Glove', 'Hammer']], + ["Bombos Tablet", True, ['Moon Pearl', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword', 'Beat Agahnim 1', 'Hammer']], + ["Bombos Tablet", True, ['Moon Pearl', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Bombos Tablet", True, ['Moon Pearl', 'Magic Mirror', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["King Zora", False, []], + ["King Zora", False, [], ['Progressive Glove', 'Flippers']], + ["King Zora", True, ['Flippers']], + ["King Zora", True, ['Progressive Glove']], + + ["Lost Woods Hideout", True, []], + + ["Lumberjack Tree", False, []], + ["Lumberjack Tree", False, [], ['Pegasus Boots']], + ["Lumberjack Tree", False, [], ['Beat Agahnim 1']], + ["Lumberjack Tree", True, ['Pegasus Boots', 'Beat Agahnim 1']], + + ["Cave 45", False, []], + ["Cave 45", False, [], ['Magic Mirror']], + ["Cave 45", False, [], ['Moon Pearl']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Hammer']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Hammer']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Cave 45", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Graveyard Cave", False, []], + ["Graveyard Cave", False, [], ['Magic Mirror']], + ["Graveyard Cave", False, [], ['Moon Pearl']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Hammer']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Hammer', 'Hookshot']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Progressive Glove', 'Hookshot']], + ["Graveyard Cave", True, ['Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1', 'Flippers', 'Hookshot']], + + ["Checkerboard Cave", False, []], + ["Checkerboard Cave", False, [], ['Progressive Glove']], + ["Checkerboard Cave", False, [], ['Ocarina']], + ["Checkerboard Cave", False, [], ['Magic Mirror']], + ["Checkerboard Cave", True, ['Ocarina', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + + ["Mini Moldorm Cave - Generous Guy", True, []], + + ["Library", False, []], + ["Library", False, [], ['Pegasus Boots']], + ["Library", True, ['Pegasus Boots']], + + ["Mushroom", True, []], + + ["Potion Shop", False, []], + ["Potion Shop", False, [], ['Mushroom']], + ["Potion Shop", True, ['Mushroom']], + + ["Maze Race", True, []], + + ["Desert Ledge", False, []], + ["Desert Ledge", False, [], ['Book of Mudora', 'Ocarina']], + ["Desert Ledge", False, [], ['Book of Mudora', 'Magic Mirror']], + ["Desert Ledge", False, ['Progressive Glove'], ['Book of Mudora', 'Progressive Glove']], + ["Desert Ledge", True, ['Book of Mudora']], + ["Desert Ledge", True, ['Ocarina', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + + ["Lake Hylia Island", False, []], + ["Lake Hylia Island", False, [], ['Magic Mirror']], + ["Lake Hylia Island", False, [], ['Moon Pearl']], + ["Lake Hylia Island", False, [], ['Flippers']], + ["Lake Hylia Island", True, ['Flippers', 'Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Progressive Glove']], + ["Lake Hylia Island", True, ['Flippers', 'Moon Pearl', 'Magic Mirror', 'Progressive Glove', 'Hammer']], + ["Lake Hylia Island", True, ['Flippers', 'Moon Pearl', 'Magic Mirror', 'Beat Agahnim 1']], + + ["Sunken Treasure", True, []], + + ["Zora's Ledge", False, []], + ["Zora's Ledge", False, [], ['Flippers']], + ["Zora's Ledge", True, ['Flippers']], + + ["Flute Spot", False, []], + ["Flute Spot", False, [], ['Shovel']], + ["Flute Spot", True, ['Shovel']], + + ["Waterfall Fairy - Left", False, []], + ["Waterfall Fairy - Left", False, [], ['Flippers']], + ["Waterfall Fairy - Left", True, ['Flippers']], + + ["Waterfall Fairy - Right", False, []], + ["Waterfall Fairy - Right", False, [], ['Flippers']], + ["Waterfall Fairy - Right", True, ['Flippers']], + ]) \ No newline at end of file diff --git a/test/vanilla/TestVanilla.py b/test/vanilla/TestVanilla.py new file mode 100644 index 00000000..179b6fff --- /dev/null +++ b/test/vanilla/TestVanilla.py @@ -0,0 +1,27 @@ +from BaseClasses import World +from Dungeons import create_dungeons, get_dungeon_item_pool +from EntranceShuffle import link_entrances +from InvertedRegions import mark_dark_world_regions +from ItemList import difficulties, generate_itempool +from Items import ItemFactory +from Regions import create_regions +from Rules import set_rules +from test.TestBase import TestBase + + +class TestVanilla(TestBase): + def setUp(self): + self.world = World(1, 'vanilla', 'noglitches', 'open', 'random', 'normal', 'normal', 'none', 'on', 'ganon', 'balanced', True, 'items', + True, False, False, False, False, False, False, None, 'none', False) + self.world.difficulty_requirements = difficulties['normal'] + create_regions(self.world, 1) + create_dungeons(self.world, 1) + link_entrances(self.world, 1) + generate_itempool(self.world, 1) + self.world.required_medallions[1] = ['Ether', 'Quake'] + self.world.itempool.extend(get_dungeon_item_pool(self.world)) + self.world.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)) + self.world.get_location('Agahnim 1', 1).item = None + self.world.get_location('Agahnim 2', 1).item = None + mark_dark_world_regions(self.world) + set_rules(self.world, 1) diff --git a/test/vanilla/__init__.py b/test/vanilla/__init__.py new file mode 100644 index 00000000..e69de29b