Skip to content

Commit a2a574e

Browse files
committed
Stardew Valley: Use new asserts in tests (ArchipelagoMW#4621)
1 parent 2316691 commit a2a574e

File tree

10 files changed

+108
-85
lines changed

10 files changed

+108
-85
lines changed

worlds/stardew_valley/test/TestGeneration.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ def test_when_generate_world_then_all_monster_checks_are_inaccessible(self):
179179
if LocationTags.MONSTERSANITY not in location_table[location.name].tags:
180180
continue
181181
with self.subTest(location.name):
182-
self.assertFalse(location.can_reach(self.multiworld.state))
182+
self.assert_cannot_reach_location(location)
183183

184184

185185
class TestMonstersanityOnePerCategory(SVTestBase):
@@ -208,7 +208,7 @@ def test_when_generate_world_then_all_monster_checks_are_inaccessible(self):
208208
if LocationTags.MONSTERSANITY not in location_table[location.name].tags:
209209
continue
210210
with self.subTest(location.name):
211-
self.assertFalse(location.can_reach(self.multiworld.state))
211+
self.assert_cannot_reach_location(location)
212212

213213

214214
class TestMonstersanityProgressive(SVTestBase):
@@ -243,7 +243,7 @@ def test_when_generate_world_then_all_monster_checks_are_inaccessible(self):
243243
if LocationTags.MONSTERSANITY not in location_table[location.name].tags:
244244
continue
245245
with self.subTest(location.name):
246-
self.assertFalse(location.can_reach(self.multiworld.state))
246+
self.assert_cannot_reach_location(location)
247247

248248

249249
class TestMonstersanitySplit(SVTestBase):
@@ -278,7 +278,7 @@ def test_when_generate_world_then_all_monster_checks_are_inaccessible(self):
278278
if LocationTags.MONSTERSANITY not in location_table[location.name].tags:
279279
continue
280280
with self.subTest(location.name):
281-
self.assertFalse(location.can_reach(self.multiworld.state))
281+
self.assert_cannot_reach_location(location)
282282

283283

284284
class TestProgressiveElevator(SVTestBase):
@@ -292,15 +292,13 @@ def test_given_elevator_to_floor_105_when_find_another_elevator_then_has_access_
292292
items_for_115 = self.generate_items_for_mine_115()
293293
last_elevator = self.get_item_by_name("Progressive Mine Elevator")
294294
self.collect(items_for_115)
295-
floor_115 = self.multiworld.get_region("The Mines - Floor 115", self.player)
296-
floor_120 = self.multiworld.get_region("The Mines - Floor 120", self.player)
297295

298-
self.assertTrue(floor_115.can_reach(self.multiworld.state))
299-
self.assertFalse(floor_120.can_reach(self.multiworld.state))
296+
self.assert_can_reach_region(Region.mines_floor_115)
297+
self.assert_cannot_reach_region(Region.mines_floor_120)
300298

301299
self.collect(last_elevator)
302300

303-
self.assertTrue(floor_120.can_reach(self.multiworld.state))
301+
self.assert_can_reach_region("The Mines - Floor 120")
304302

305303
def generate_items_for_mine_115(self) -> List[Item]:
306304
pickaxes = [self.get_item_by_name("Progressive Pickaxe")] * 2
@@ -336,23 +334,23 @@ def test_given_access_to_floor_115_when_find_more_tools_then_has_access_to_skull
336334
skull_25 = self.multiworld.get_region(Region.skull_cavern_25, self.player)
337335
skull_75 = self.multiworld.get_region(Region.skull_cavern_75, self.player)
338336

339-
self.assertTrue(floor_115.can_reach(self.multiworld.state))
340-
self.assertFalse(skull_25.can_reach(self.multiworld.state))
341-
self.assertFalse(skull_75.can_reach(self.multiworld.state))
337+
self.assert_can_reach_region(Region.mines_floor_115)
338+
self.assert_cannot_reach_region(Region.skull_cavern_25)
339+
self.assert_cannot_reach_region(Region.skull_cavern_75)
342340

343341
self.remove(items_for_115)
344342
self.collect(items_for_skull_50)
345343

346-
self.assertTrue(floor_115.can_reach(self.multiworld.state))
347-
self.assertTrue(skull_25.can_reach(self.multiworld.state))
348-
self.assertFalse(skull_75.can_reach(self.multiworld.state))
344+
self.assert_can_reach_region(Region.mines_floor_115)
345+
self.assert_can_reach_region(Region.skull_cavern_25)
346+
self.assert_cannot_reach_region(Region.skull_cavern_75)
349347

350348
self.remove(items_for_skull_50)
351349
self.collect(items_for_skull_100)
352350

353-
self.assertTrue(floor_115.can_reach(self.multiworld.state))
354-
self.assertTrue(skull_25.can_reach(self.multiworld.state))
355-
self.assertTrue(skull_75.can_reach(self.multiworld.state))
351+
self.assert_can_reach_region(Region.mines_floor_115)
352+
self.assert_can_reach_region(Region.skull_cavern_25)
353+
self.assert_can_reach_region(Region.skull_cavern_75)
356354

357355
def generate_items_for_mine_115(self) -> List[Item]:
358356
pickaxes = [self.get_item_by_name("Progressive Pickaxe")] * 2

worlds/stardew_valley/test/TestWalnutsanity.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from .bases import SVTestBase
22
from ..options import ExcludeGingerIsland, Walnutsanity, ToolProgression, SkillProgression
33
from ..strings.ap_names.ap_option_names import WalnutsanityOptionName
4+
from ..strings.ap_names.transport_names import Transportation
45

56

67
class TestWalnutsanityNone(SVTestBase):
@@ -28,24 +29,27 @@ def test_logic_received_walnuts(self):
2829
self.collect("Island West Turtle")
2930
self.collect("Progressive House")
3031
self.collect("5 Golden Walnuts", 10)
32+
self.assert_cannot_reach_location(Transportation.parrot_express)
3133

32-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
3334
self.collect("Island North Turtle")
3435
self.collect("Island Resort")
3536
self.collect("Open Professor Snail Cave")
36-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
37+
self.assert_cannot_reach_location(Transportation.parrot_express)
38+
3739
self.collect("Dig Site Bridge")
3840
self.collect("Island Farmhouse")
3941
self.collect("Qi Walnut Room")
40-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
42+
self.assert_cannot_reach_location(Transportation.parrot_express)
43+
4144
self.collect("Combat Level", 10)
4245
self.collect("Mining Level", 10)
43-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
46+
self.assert_cannot_reach_location(Transportation.parrot_express)
47+
4448
self.collect("Progressive Slingshot")
4549
self.collect("Progressive Weapon", 5)
4650
self.collect("Progressive Pickaxe", 4)
4751
self.collect("Progressive Watering Can", 4)
48-
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
52+
self.assert_can_reach_location(Transportation.parrot_express)
4953

5054

5155
class TestWalnutsanityPuzzles(SVTestBase):
@@ -131,9 +135,9 @@ def test_logic_received_walnuts(self):
131135
self.collect("Island West Turtle")
132136
self.collect("5 Golden Walnuts", 5)
133137

134-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
138+
self.assert_cannot_reach_location(Transportation.parrot_express)
135139
self.collect("Island North Turtle")
136-
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
140+
self.assert_can_reach_location(Transportation.parrot_express)
137141

138142

139143
class TestWalnutsanityDigSpots(SVTestBase):
@@ -193,20 +197,20 @@ def test_logic_received_walnuts(self):
193197
# You need to receive 40, and collect 4
194198
self.collect("Island Obelisk")
195199
self.collect("Island West Turtle")
196-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
200+
self.assert_cannot_reach_location(Transportation.parrot_express)
197201
items = self.collect("5 Golden Walnuts", 8)
198-
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
202+
self.assert_can_reach_location(Transportation.parrot_express)
199203
self.remove(items)
200-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
204+
self.assert_cannot_reach_location(Transportation.parrot_express)
201205
items = self.collect("3 Golden Walnuts", 14)
202-
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
206+
self.assert_can_reach_location(Transportation.parrot_express)
203207
self.remove(items)
204-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
208+
self.assert_cannot_reach_location(Transportation.parrot_express)
205209
items = self.collect("Golden Walnut", 40)
206-
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
210+
self.assert_can_reach_location(Transportation.parrot_express)
207211
self.remove(items)
208-
self.assertFalse(self.multiworld.state.can_reach_location("Parrot Express", self.player))
212+
self.assert_cannot_reach_location(Transportation.parrot_express)
209213
self.collect("5 Golden Walnuts", 4)
210214
self.collect("3 Golden Walnuts", 6)
211215
self.collect("Golden Walnut", 2)
212-
self.assertTrue(self.multiworld.state.can_reach_location("Parrot Express", self.player))
216+
self.assert_can_reach_location(Transportation.parrot_express)

worlds/stardew_valley/test/bases.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from contextlib import contextmanager
88
from typing import Optional, Dict, Union, Any, List, Iterable
99

10-
from BaseClasses import get_seed, MultiWorld, Location, Item, CollectionState
10+
from BaseClasses import get_seed, MultiWorld, Location, Item, Region, CollectionState
1111
from test.bases import WorldTestBase
1212
from test.general import gen_steps, setup_solo_multiworld as setup_base_solo_multiworld
1313
from worlds.AutoWorld import call_all
@@ -18,6 +18,7 @@
1818
from ..options import StardewValleyOption, options
1919

2020
logger = logging.getLogger(__name__)
21+
2122
DEFAULT_TEST_SEED = get_seed()
2223
logger.info(f"Default Test Seed: {DEFAULT_TEST_SEED}")
2324

@@ -179,6 +180,16 @@ def assert_cannot_reach_location(self, location: Location | str, state: Collecti
179180
state = self.multiworld.state
180181
super().assert_cannot_reach_location(location, state)
181182

183+
def assert_can_reach_region(self, region: Region | str, state: CollectionState | None = None) -> None:
184+
if state is None:
185+
state = self.multiworld.state
186+
super().assert_can_reach_region(region, state)
187+
188+
def assert_cannot_reach_region(self, region: Region | str, state: CollectionState | None = None) -> None:
189+
if state is None:
190+
state = self.multiworld.state
191+
super().assert_cannot_reach_region(region, state)
192+
182193

183194
pre_generated_worlds = {}
184195

worlds/stardew_valley/test/rules/TestArcades.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ class TestArcadeMachinesLogic(SVTestBase):
88
}
99

1010
def test_prairie_king(self):
11-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 1")(self.multiworld.state))
12-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 2")(self.multiworld.state))
13-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 3")(self.multiworld.state))
11+
self.assert_cannot_reach_region("JotPK World 1")
12+
self.assert_cannot_reach_region("JotPK World 2")
13+
self.assert_cannot_reach_region("JotPK World 3")
1414
self.assert_cannot_reach_location("Journey of the Prairie King Victory")
1515

1616
boots = self.create_item("JotPK: Progressive Boots")
@@ -21,18 +21,18 @@ def test_prairie_king(self):
2121

2222
self.multiworld.state.collect(boots)
2323
self.multiworld.state.collect(gun)
24-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 1")(self.multiworld.state))
25-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 2")(self.multiworld.state))
26-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 3")(self.multiworld.state))
24+
self.assert_can_reach_region("JotPK World 1")
25+
self.assert_cannot_reach_region("JotPK World 2")
26+
self.assert_cannot_reach_region("JotPK World 3")
2727
self.assert_cannot_reach_location("Journey of the Prairie King Victory")
2828
self.remove(boots)
2929
self.remove(gun)
3030

3131
self.multiworld.state.collect(boots)
3232
self.multiworld.state.collect(boots)
33-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 1")(self.multiworld.state))
34-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 2")(self.multiworld.state))
35-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 3")(self.multiworld.state))
33+
self.assert_can_reach_region("JotPK World 1")
34+
self.assert_cannot_reach_region("JotPK World 2")
35+
self.assert_cannot_reach_region("JotPK World 3")
3636
self.assert_cannot_reach_location("Journey of the Prairie King Victory")
3737
self.remove(boots)
3838
self.remove(boots)
@@ -41,9 +41,9 @@ def test_prairie_king(self):
4141
self.multiworld.state.collect(gun)
4242
self.multiworld.state.collect(ammo)
4343
self.multiworld.state.collect(life)
44-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 1")(self.multiworld.state))
45-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 2")(self.multiworld.state))
46-
self.assertFalse(self.world.logic.region.can_reach("JotPK World 3")(self.multiworld.state))
44+
self.assert_can_reach_region("JotPK World 1")
45+
self.assert_can_reach_region("JotPK World 2")
46+
self.assert_cannot_reach_region("JotPK World 3")
4747
self.assert_cannot_reach_location("Journey of the Prairie King Victory")
4848
self.remove(boots)
4949
self.remove(gun)
@@ -57,9 +57,9 @@ def test_prairie_king(self):
5757
self.multiworld.state.collect(ammo)
5858
self.multiworld.state.collect(life)
5959
self.multiworld.state.collect(drop)
60-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 1")(self.multiworld.state))
61-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 2")(self.multiworld.state))
62-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 3")(self.multiworld.state))
60+
self.assert_can_reach_region("JotPK World 1")
61+
self.assert_can_reach_region("JotPK World 2")
62+
self.assert_can_reach_region("JotPK World 3")
6363
self.assert_cannot_reach_location("Journey of the Prairie King Victory")
6464
self.remove(boots)
6565
self.remove(gun)
@@ -80,9 +80,9 @@ def test_prairie_king(self):
8080
self.multiworld.state.collect(ammo)
8181
self.multiworld.state.collect(life)
8282
self.multiworld.state.collect(drop)
83-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 1")(self.multiworld.state))
84-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 2")(self.multiworld.state))
85-
self.assertTrue(self.world.logic.region.can_reach("JotPK World 3")(self.multiworld.state))
83+
self.assert_can_reach_region("JotPK World 1")
84+
self.assert_can_reach_region("JotPK World 2")
85+
self.assert_can_reach_region("JotPK World 3")
8686
self.assert_can_reach_location("Journey of the Prairie King Victory")
8787
self.remove(boots)
8888
self.remove(boots)

worlds/stardew_valley/test/rules/TestBuildings.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,41 @@ class TestBuildingLogic(SVTestBase):
99
}
1010

1111
def test_coop_blueprint(self):
12-
self.assert_cannot_reach_location("Coop Blueprint")
12+
location = "Coop Blueprint"
13+
self.assert_cannot_reach_location(location)
1314

1415
self.collect_lots_of_money()
15-
self.assert_can_reach_location("Coop Blueprint")
16+
self.assert_can_reach_location(location)
1617

1718
def test_big_coop_blueprint(self):
18-
self.assert_cannot_reach_location("Big Coop Blueprint")
19+
location = "Big Coop Blueprint"
20+
self.assert_cannot_reach_location(location)
1921

2022
self.collect_lots_of_money()
21-
self.assert_cannot_reach_location("Big Coop Blueprint")
23+
self.assert_cannot_reach_location(location)
2224

2325
self.multiworld.state.collect(self.create_item("Progressive Coop"))
24-
self.assert_can_reach_location("Big Coop Blueprint")
26+
self.assert_can_reach_location(location)
2527

2628
def test_deluxe_coop_blueprint(self):
27-
self.assert_cannot_reach_location("Deluxe Coop Blueprint")
29+
location = "Deluxe Coop Blueprint"
30+
self.assert_cannot_reach_location(location)
2831

2932
self.collect_lots_of_money()
30-
self.assert_cannot_reach_location("Deluxe Coop Blueprint")
33+
self.assert_cannot_reach_location(location)
3134

3235
self.multiworld.state.collect(self.create_item("Progressive Coop"))
33-
self.assert_cannot_reach_location("Deluxe Coop Blueprint")
36+
self.assert_cannot_reach_location(location)
3437

3538
self.multiworld.state.collect(self.create_item("Progressive Coop"))
36-
self.assert_can_reach_location("Deluxe Coop Blueprint")
39+
self.assert_can_reach_location(location)
3740

3841
def test_big_shed_blueprint(self):
39-
self.assert_cannot_reach_location("Big Shed Blueprint")
42+
location = "Big Shed Blueprint"
43+
self.assert_cannot_reach_location(location)
4044

4145
self.collect_lots_of_money()
42-
self.assert_cannot_reach_location("Big Shed Blueprint")
46+
self.assert_cannot_reach_location(location)
4347

4448
self.multiworld.state.collect(self.create_item("Progressive Shed"))
45-
self.assert_can_reach_location("Big Shed Blueprint")
49+
self.assert_can_reach_location(location)

worlds/stardew_valley/test/rules/TestCraftingRecipes.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TestCraftsanityLogic(SVTestBase):
1313
}
1414

1515
def test_can_craft_recipe(self):
16+
location = "Craft Marble Brazier"
1617
self.collect([self.create_item("Progressive Pickaxe")] * 4)
1718
self.collect([self.create_item("Progressive Fishing Rod")] * 4)
1819
self.collect([self.create_item("Progressive Sword")] * 4)
@@ -21,16 +22,17 @@ def test_can_craft_recipe(self):
2122
self.collect([self.create_item("Combat Level")] * 10)
2223
self.collect([self.create_item("Fishing Level")] * 10)
2324
self.collect_all_the_money()
24-
self.assert_cannot_reach_location("Craft Marble Brazier")
25+
self.assert_cannot_reach_location(location)
2526

2627
self.multiworld.state.collect(self.create_item("Marble Brazier Recipe"))
27-
self.assert_can_reach_location("Craft Marble Brazier")
28+
self.assert_can_reach_location(location)
2829

2930
def test_can_learn_crafting_recipe(self):
30-
self.assert_cannot_reach_location("Marble Brazier Recipe")
31+
location = "Marble Brazier Recipe"
32+
self.assert_cannot_reach_location(location)
3133

3234
self.collect_lots_of_money()
33-
self.assert_can_reach_location("Marble Brazier Recipe")
35+
self.assert_can_reach_location(location)
3436

3537
def test_can_craft_festival_recipe(self):
3638
recipe = all_crafting_recipes_by_name["Jack-O-Lantern"]

worlds/stardew_valley/test/rules/TestFishing.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,19 @@ def test_catch_fish_requires_region_unlock(self):
4242
with self.subTest(f"Region rules for {fish}"):
4343
self.collect_all_the_money()
4444
item_names = fish_and_items[fish]
45-
self.assert_cannot_reach_location(f"Fishsanity: {fish}")
45+
location = f"Fishsanity: {fish}"
46+
self.assert_cannot_reach_location(location)
4647
items = []
4748
for item_name in item_names:
4849
items.append(self.collect(item_name))
4950
with self.subTest(f"{fish} can be reached with {item_names}"):
50-
self.assert_can_reach_location(f"Fishsanity: {fish}")
51+
self.assert_can_reach_location(location)
5152
for item_required in items:
5253
self.multiworld.state = self.original_state.copy()
5354
with self.subTest(f"{fish} requires {item_required.name}"):
5455
for item_to_collect in items:
5556
if item_to_collect.name != item_required.name:
5657
self.collect(item_to_collect)
57-
self.assert_cannot_reach_location(f"Fishsanity: {fish}")
58+
self.assert_cannot_reach_location(location)
5859

5960
self.multiworld.state = self.original_state.copy()

0 commit comments

Comments
 (0)