mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00

The static class with the "disable forced good item" field is gone. Now, certain tests that want to check for specific access progression can run a method that removes the forced good item and adds it back to the pool. Tests that don't care about this will collect the forced good item like normal. This should prevent the intermittent fill failures on complex doors unit tests, since the forced good item should provide enough locations to fill in.
103 lines
4.8 KiB
Python
103 lines
4.8 KiB
Python
from . import LingoTestBase
|
|
|
|
|
|
class TestRequiredRoomLogic(LingoTestBase):
|
|
options = {
|
|
"shuffle_doors": "complex",
|
|
"shuffle_colors": "false",
|
|
}
|
|
|
|
def test_pilgrim_first(self) -> None:
|
|
self.remove_forced_good_item()
|
|
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Antechamber", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Sun Painting")
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Antechamber", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Shortcut to The Seeker")
|
|
self.assertTrue(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Starting Room - Back Right Door")
|
|
self.assertTrue(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
def test_hidden_first(self) -> None:
|
|
self.remove_forced_good_item()
|
|
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Starting Room - Back Right Door")
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Shortcut to The Seeker")
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Sun Painting")
|
|
self.assertTrue(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertTrue(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
|
|
class TestRequiredDoorLogic(LingoTestBase):
|
|
options = {
|
|
"shuffle_doors": "complex",
|
|
"shuffle_colors": "false",
|
|
}
|
|
|
|
def test_through_rhyme(self) -> None:
|
|
self.remove_forced_good_item()
|
|
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Starting Room - Rhyme Room Entrance")
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Rhyme Room (Looped Square) - Door to Circle")
|
|
self.assertTrue(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
def test_through_hidden(self) -> None:
|
|
self.remove_forced_good_item()
|
|
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Starting Room - Rhyme Room Entrance")
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Starting Room - Back Right Door")
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Hidden Room - Rhyme Room Entrance")
|
|
self.assertTrue(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
|
|
class TestSimpleDoors(LingoTestBase):
|
|
options = {
|
|
"shuffle_doors": "simple",
|
|
"shuffle_colors": "false",
|
|
}
|
|
|
|
def test_requirement(self):
|
|
self.remove_forced_good_item()
|
|
|
|
self.assertFalse(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player))
|
|
|
|
self.collect_by_name("Rhyme Room Doors")
|
|
self.assertTrue(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player))
|
|
|