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"]],
        ])
