from test.minor_glitches.TestMinor import TestMinor


class TestEntrances(TestMinor):

    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", "Flute"]],
            ["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, ["Flute", "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", "Flute"]],
            ["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, ["Flute", "Progressive Glove", "Progressive Glove", "Magic Mirror"]],

            ["Tower of Hera", False, []],
            ["Tower of Hera", False, [], ["Flute", "Progressive Glove"]],
            ["Tower of Hera", False, [], ["Flute", "Lamp"]],
            ["Tower of Hera", False, [], ["Magic Mirror", "Hammer"]],
            ["Tower of Hera", False, [], ["Magic Mirror", "Hookshot"]],
            ["Tower of Hera", True, ["Flute", "Magic Mirror"]],
            ["Tower of Hera", True, ["Progressive Glove", "Lamp", "Magic Mirror"]],
            ["Tower of Hera", True, ["Flute", "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", True, ["Beat Agahnim 1", "Moon Pearl"]],
            ["Palace of Darkness", True, ["Hammer", "Progressive Glove", "Moon Pearl"]],
            # village of outcasts portal -> qirn jump
            ["Palace of Darkness", True, ["Progressive Glove", "Progressive Glove", "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, ["Progressive Glove"], ["Progressive Glove"]],
            ["Ice Palace", True, ["Progressive Glove", "Progressive Glove"]],

            ["Misery Mire", False, []],
            ["Misery Mire", False, [], ["Moon Pearl"]],
            ["Misery Mire", False, [], ["Flute"]],
            ["Misery Mire", False, [], ["Ether"]],
            ["Misery Mire", False, [], ["Progressive Sword"]],
            ["Misery Mire", False, ["Progressive Glove"], ["Progressive Glove"]],
            ["Misery Mire", True, ["Progressive Glove", "Progressive Glove", "Flute", "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", "Flute"]],
            ["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", "Flute", "Hookshot"]],
            ["Turtle Rock", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Hammer", "Quake", "Progressive Sword", "Flute", "Magic Mirror"]],

            ["Ganons Tower", False, []],
            ["Ganons Tower", False, ["Progressive Glove"], ["Progressive Glove"]],
            ["Ganons Tower", False, [], ["Lamp", "Flute"]],
            ["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, ["Flute", "Magic Mirror", "Hammer", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
            ["Ganons Tower", True, ["Flute", "Hookshot", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
        ])