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

            ["Agahnims Tower", False, []],
            ["Agahnims Tower", False, [], ["Ocarina", "Lamp"]],
            ["Agahnims Tower", False, [], ["Ocarina", "Progressive Glove"]],
            ["Agahnims Tower", False, [], ["Moon Pearl", "Lamp"]],
            ["Agahnims Tower", False, [], ["Moon Pearl", "Progressive Glove"]],
            ["Agahnims Tower", True, ["Lamp", "Progressive Glove"]],
            ["Agahnims Tower", True, ["Ocarina", "Beat Agahnim 1", "Moon Pearl"]],
            ["Agahnims Tower", True, ["Ocarina", "Progressive Glove", "Progressive Glove", "Moon Pearl"]],
            ["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"]],

            ["Ganons Tower", False, []],
            ["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, ["Beat Agahnim 1", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
            ["Ganons Tower", True, ["Moon Pearl", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
            ["Ganons Tower", True, ["Moon Pearl", "Hammer", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
        ])