Stardew Valley: Add walnutsanity prefix to locations (#4934)
This commit is contained in:
@@ -1,26 +1,46 @@
|
||||
import unittest
|
||||
|
||||
from .bases import SVTestBase
|
||||
from ..options import ExcludeGingerIsland, Walnutsanity, ToolProgression, SkillProgression
|
||||
from ..strings.ap_names.ap_option_names import WalnutsanityOptionName
|
||||
|
||||
|
||||
class TestWalnutsanityNone(SVTestBase):
|
||||
class SVWalnutsanityTestBase(SVTestBase):
|
||||
expected_walnut_locations: set[str] = set()
|
||||
unexpected_walnut_locations: set[str] = set()
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls) -> None:
|
||||
if cls is SVWalnutsanityTestBase:
|
||||
raise unittest.SkipTest("Base tests disabled")
|
||||
|
||||
super().setUpClass()
|
||||
|
||||
def test_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
for location in self.expected_walnut_locations:
|
||||
self.assertIn(location, location_names, f"{location} should be in the location names")
|
||||
for location in self.unexpected_walnut_locations:
|
||||
self.assertNotIn(location, location_names, f"{location} should not be in the location names")
|
||||
|
||||
|
||||
class TestWalnutsanityNone(SVWalnutsanityTestBase):
|
||||
options = {
|
||||
ExcludeGingerIsland: ExcludeGingerIsland.option_false,
|
||||
Walnutsanity: Walnutsanity.preset_none,
|
||||
SkillProgression: ToolProgression.option_progressive,
|
||||
ToolProgression: ToolProgression.option_progressive,
|
||||
}
|
||||
|
||||
def test_no_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
self.assertNotIn("Open Golden Coconut", location_names)
|
||||
self.assertNotIn("Fishing Walnut 4", location_names)
|
||||
self.assertNotIn("Journal Scrap #6", location_names)
|
||||
self.assertNotIn("Starfish Triangle", location_names)
|
||||
self.assertNotIn("Bush Behind Coconut Tree", location_names)
|
||||
self.assertNotIn("Purple Starfish Island Survey", location_names)
|
||||
self.assertNotIn("Volcano Monsters Walnut 3", location_names)
|
||||
self.assertNotIn("Cliff Over Island South Bush", location_names)
|
||||
unexpected_walnut_locations = {
|
||||
"Walnutsanity: Open Golden Coconut",
|
||||
"Walnutsanity: Fishing Walnut 4",
|
||||
"Walnutsanity: Journal Scrap #6",
|
||||
"Walnutsanity: Starfish Triangle",
|
||||
"Walnutsanity: Bush Behind Coconut Tree",
|
||||
"Walnutsanity: Purple Starfish Island Survey",
|
||||
"Walnutsanity: Volcano Monsters Walnut 3",
|
||||
"Walnutsanity: Cliff Over Island South Bush",
|
||||
}
|
||||
|
||||
def test_logic_received_walnuts(self):
|
||||
# You need to receive 0, and collect 40
|
||||
@@ -48,28 +68,30 @@ class TestWalnutsanityNone(SVTestBase):
|
||||
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
|
||||
|
||||
|
||||
class TestWalnutsanityPuzzles(SVTestBase):
|
||||
class TestWalnutsanityPuzzles(SVWalnutsanityTestBase):
|
||||
options = {
|
||||
ExcludeGingerIsland: ExcludeGingerIsland.option_false,
|
||||
Walnutsanity: frozenset({WalnutsanityOptionName.puzzles}),
|
||||
SkillProgression: ToolProgression.option_progressive,
|
||||
ToolProgression: ToolProgression.option_progressive,
|
||||
}
|
||||
|
||||
def test_only_puzzle_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
self.assertIn("Open Golden Coconut", location_names)
|
||||
self.assertNotIn("Fishing Walnut 4", location_names)
|
||||
self.assertNotIn("Journal Scrap #6", location_names)
|
||||
self.assertNotIn("Starfish Triangle", location_names)
|
||||
self.assertNotIn("Bush Behind Coconut Tree", location_names)
|
||||
self.assertIn("Purple Starfish Island Survey", location_names)
|
||||
self.assertNotIn("Volcano Monsters Walnut 3", location_names)
|
||||
self.assertNotIn("Cliff Over Island South Bush", location_names)
|
||||
expected_walnut_locations = {
|
||||
"Walnutsanity: Open Golden Coconut",
|
||||
"Walnutsanity: Purple Starfish Island Survey",
|
||||
}
|
||||
unexpected_walnut_locations = {
|
||||
"Walnutsanity: Fishing Walnut 4",
|
||||
"Walnutsanity: Journal Scrap #6",
|
||||
"Walnutsanity: Starfish Triangle",
|
||||
"Walnutsanity: Bush Behind Coconut Tree",
|
||||
"Walnutsanity: Volcano Monsters Walnut 3",
|
||||
"Walnutsanity: Cliff Over Island South Bush",
|
||||
}
|
||||
|
||||
def test_field_office_locations_require_professor_snail(self):
|
||||
location_names = ["Complete Large Animal Collection", "Complete Snake Collection", "Complete Mummified Frog Collection",
|
||||
"Complete Mummified Bat Collection", "Purple Flowers Island Survey", "Purple Starfish Island Survey", ]
|
||||
location_names = ["Walnutsanity: Complete Large Animal Collection", "Walnutsanity: Complete Snake Collection",
|
||||
"Walnutsanity: Complete Mummified Frog Collection", "Walnutsanity: Complete Mummified Bat Collection",
|
||||
"Walnutsanity: Purple Flowers Island Survey", "Walnutsanity: Purple Starfish Island Survey", ]
|
||||
self.collect("Island Obelisk")
|
||||
self.collect("Island North Turtle")
|
||||
self.collect("Island West Turtle")
|
||||
@@ -90,40 +112,42 @@ class TestWalnutsanityPuzzles(SVTestBase):
|
||||
self.assert_can_reach_location(location)
|
||||
|
||||
|
||||
class TestWalnutsanityBushes(SVTestBase):
|
||||
class TestWalnutsanityBushes(SVWalnutsanityTestBase):
|
||||
options = {
|
||||
ExcludeGingerIsland: ExcludeGingerIsland.option_false,
|
||||
Walnutsanity: frozenset({WalnutsanityOptionName.bushes}),
|
||||
}
|
||||
|
||||
def test_only_bush_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
self.assertNotIn("Open Golden Coconut", location_names)
|
||||
self.assertNotIn("Fishing Walnut 4", location_names)
|
||||
self.assertNotIn("Journal Scrap #6", location_names)
|
||||
self.assertNotIn("Starfish Triangle", location_names)
|
||||
self.assertIn("Bush Behind Coconut Tree", location_names)
|
||||
self.assertNotIn("Purple Starfish Island Survey", location_names)
|
||||
self.assertNotIn("Volcano Monsters Walnut 3", location_names)
|
||||
self.assertIn("Cliff Over Island South Bush", location_names)
|
||||
expected_walnut_locations = {
|
||||
"Walnutsanity: Bush Behind Coconut Tree",
|
||||
"Walnutsanity: Cliff Over Island South Bush",
|
||||
}
|
||||
unexpected_walnut_locations = {
|
||||
"Walnutsanity: Open Golden Coconut",
|
||||
"Walnutsanity: Fishing Walnut 4",
|
||||
"Walnutsanity: Journal Scrap #6",
|
||||
"Walnutsanity: Starfish Triangle",
|
||||
"Walnutsanity: Purple Starfish Island Survey",
|
||||
"Walnutsanity: Volcano Monsters Walnut 3",
|
||||
}
|
||||
|
||||
|
||||
class TestWalnutsanityPuzzlesAndBushes(SVTestBase):
|
||||
class TestWalnutsanityPuzzlesAndBushes(SVWalnutsanityTestBase):
|
||||
options = {
|
||||
ExcludeGingerIsland: ExcludeGingerIsland.option_false,
|
||||
Walnutsanity: frozenset({WalnutsanityOptionName.puzzles, WalnutsanityOptionName.bushes}),
|
||||
}
|
||||
|
||||
def test_only_bush_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
self.assertIn("Open Golden Coconut", location_names)
|
||||
self.assertNotIn("Fishing Walnut 4", location_names)
|
||||
self.assertNotIn("Journal Scrap #6", location_names)
|
||||
self.assertNotIn("Starfish Triangle", location_names)
|
||||
self.assertIn("Bush Behind Coconut Tree", location_names)
|
||||
self.assertIn("Purple Starfish Island Survey", location_names)
|
||||
self.assertNotIn("Volcano Monsters Walnut 3", location_names)
|
||||
self.assertIn("Cliff Over Island South Bush", location_names)
|
||||
expected_walnut_locations = {
|
||||
"Walnutsanity: Open Golden Coconut",
|
||||
"Walnutsanity: Bush Behind Coconut Tree",
|
||||
"Walnutsanity: Purple Starfish Island Survey",
|
||||
"Walnutsanity: Cliff Over Island South Bush",
|
||||
}
|
||||
unexpected_walnut_locations = {
|
||||
"Walnutsanity: Fishing Walnut 4",
|
||||
"Walnutsanity: Journal Scrap #6",
|
||||
"Walnutsanity: Starfish Triangle",
|
||||
"Walnutsanity: Volcano Monsters Walnut 3",
|
||||
}
|
||||
|
||||
def test_logic_received_walnuts(self):
|
||||
# You need to receive 25, and collect 15
|
||||
@@ -136,58 +160,59 @@ class TestWalnutsanityPuzzlesAndBushes(SVTestBase):
|
||||
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
|
||||
|
||||
|
||||
class TestWalnutsanityDigSpots(SVTestBase):
|
||||
class TestWalnutsanityDigSpots(SVWalnutsanityTestBase):
|
||||
options = {
|
||||
ExcludeGingerIsland: ExcludeGingerIsland.option_false,
|
||||
Walnutsanity: frozenset({WalnutsanityOptionName.dig_spots}),
|
||||
}
|
||||
|
||||
def test_only_dig_spots_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
self.assertNotIn("Open Golden Coconut", location_names)
|
||||
self.assertNotIn("Fishing Walnut 4", location_names)
|
||||
self.assertIn("Journal Scrap #6", location_names)
|
||||
self.assertIn("Starfish Triangle", location_names)
|
||||
self.assertNotIn("Bush Behind Coconut Tree", location_names)
|
||||
self.assertNotIn("Purple Starfish Island Survey", location_names)
|
||||
self.assertNotIn("Volcano Monsters Walnut 3", location_names)
|
||||
self.assertNotIn("Cliff Over Island South Bush", location_names)
|
||||
expected_walnut_locations = {
|
||||
"Walnutsanity: Journal Scrap #6",
|
||||
"Walnutsanity: Starfish Triangle",
|
||||
}
|
||||
unexpected_walnut_locations = {
|
||||
"Walnutsanity: Open Golden Coconut",
|
||||
"Walnutsanity: Fishing Walnut 4",
|
||||
"Walnutsanity: Bush Behind Coconut Tree",
|
||||
"Walnutsanity: Purple Starfish Island Survey",
|
||||
"Walnutsanity: Volcano Monsters Walnut 3",
|
||||
"Walnutsanity: Cliff Over Island South Bush",
|
||||
}
|
||||
|
||||
|
||||
class TestWalnutsanityRepeatables(SVTestBase):
|
||||
class TestWalnutsanityRepeatables(SVWalnutsanityTestBase):
|
||||
options = {
|
||||
ExcludeGingerIsland: ExcludeGingerIsland.option_false,
|
||||
Walnutsanity: frozenset({WalnutsanityOptionName.repeatables}),
|
||||
}
|
||||
|
||||
def test_only_repeatable_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
self.assertNotIn("Open Golden Coconut", location_names)
|
||||
self.assertIn("Fishing Walnut 4", location_names)
|
||||
self.assertNotIn("Journal Scrap #6", location_names)
|
||||
self.assertNotIn("Starfish Triangle", location_names)
|
||||
self.assertNotIn("Bush Behind Coconut Tree", location_names)
|
||||
self.assertNotIn("Purple Starfish Island Survey", location_names)
|
||||
self.assertIn("Volcano Monsters Walnut 3", location_names)
|
||||
self.assertNotIn("Cliff Over Island South Bush", location_names)
|
||||
expected_walnut_locations = {
|
||||
"Walnutsanity: Fishing Walnut 4",
|
||||
"Walnutsanity: Volcano Monsters Walnut 3",
|
||||
}
|
||||
unexpected_walnut_locations = {
|
||||
"Walnutsanity: Open Golden Coconut",
|
||||
"Walnutsanity: Journal Scrap #6",
|
||||
"Walnutsanity: Starfish Triangle",
|
||||
"Walnutsanity: Bush Behind Coconut Tree",
|
||||
"Walnutsanity: Purple Starfish Island Survey",
|
||||
"Walnutsanity: Cliff Over Island South Bush",
|
||||
}
|
||||
|
||||
|
||||
class TestWalnutsanityAll(SVTestBase):
|
||||
class TestWalnutsanityAll(SVWalnutsanityTestBase):
|
||||
options = {
|
||||
ExcludeGingerIsland: ExcludeGingerIsland.option_false,
|
||||
Walnutsanity: Walnutsanity.preset_all,
|
||||
}
|
||||
|
||||
def test_all_walnut_locations(self):
|
||||
location_names = {location.name for location in self.multiworld.get_locations()}
|
||||
self.assertIn("Open Golden Coconut", location_names)
|
||||
self.assertIn("Fishing Walnut 4", location_names)
|
||||
self.assertIn("Journal Scrap #6", location_names)
|
||||
self.assertIn("Starfish Triangle", location_names)
|
||||
self.assertIn("Bush Behind Coconut Tree", location_names)
|
||||
self.assertIn("Purple Starfish Island Survey", location_names)
|
||||
self.assertIn("Volcano Monsters Walnut 3", location_names)
|
||||
self.assertIn("Cliff Over Island South Bush", location_names)
|
||||
expected_walnut_locations = {
|
||||
"Walnutsanity: Open Golden Coconut",
|
||||
"Walnutsanity: Fishing Walnut 4",
|
||||
"Walnutsanity: Journal Scrap #6",
|
||||
"Walnutsanity: Starfish Triangle",
|
||||
"Walnutsanity: Bush Behind Coconut Tree",
|
||||
"Walnutsanity: Purple Starfish Island Survey",
|
||||
"Walnutsanity: Volcano Monsters Walnut 3",
|
||||
"Walnutsanity: Cliff Over Island South Bush",
|
||||
}
|
||||
|
||||
def test_logic_received_walnuts(self):
|
||||
# You need to receive 40, and collect 4
|
||||
|
||||
Reference in New Issue
Block a user