Skip to content

Commit bb06944

Browse files
authored
Stardew valley: backpack fix, enum fix (#2028)
* - Reorganised tests for better backpack coverage - Added a test for backpack locations being absent on vanilla * - Fix backpack locations on vanilla * - Fixed a typo in documentation * - Added missing parenthesis after enum.auto so that Python 3.11 still works * - Added Blank lines at the end of the backpack test files * - cleaned whitespace
1 parent fa3d69c commit bb06944

File tree

8 files changed

+107
-53
lines changed

8 files changed

+107
-53
lines changed

worlds/stardew_valley/docs/en_Stardew Valley.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ The player can choose from a number of goals, using their YAML settings.
2424
- Get recognized as the [Greatest Walnut Hunter](https://stardewvalleywiki.com/Golden_Walnut) by Mr Qi, which requires finding all 130 golden walnuts on ginger island
2525
- Achieve [Perfection](https://stardewvalleywiki.com/Perfection) in your save file
2626

27-
## What are location check in Stardew Valley?
27+
## What are location checks in Stardew Valley?
2828

2929
Location checks in Stardew Valley always include:
3030
- [Community Center Bundles](https://stardewvalleywiki.com/Bundles)

worlds/stardew_valley/items.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class Group(enum.Enum):
5555
RARECROW = enum.auto()
5656
TRAP = enum.auto()
5757
MAXIMUM_ONE = enum.auto()
58-
EXACTLY_TWO = enum.auto
58+
EXACTLY_TWO = enum.auto()
5959
DEPRECATED = enum.auto()
6060
RESOURCE_PACK_USEFUL = enum.auto()
6161
SPECIAL_ORDER_BOARD = enum.auto()

worlds/stardew_valley/locations.py

+2
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ def extend_mandatory_locations(randomized_locations: List[LocationData], world_o
276276

277277

278278
def extend_backpack_locations(randomized_locations: List[LocationData], world_options):
279+
if world_options[options.BackpackProgression] == options.BackpackProgression.option_vanilla:
280+
return
279281
backpack_locations = [location for location in locations_by_tag[LocationTags.BACKPACK]]
280282
filtered_backpack_locations = filter_modded_locations(world_options, backpack_locations)
281283
randomized_locations.extend(filtered_backpack_locations)
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from . import SVTestBase
2+
from .. import options
3+
4+
5+
class TestBackpackVanilla(SVTestBase):
6+
options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_vanilla}
7+
8+
def test_no_backpack_in_pool(self):
9+
item_names = {item.name for item in self.multiworld.get_items()}
10+
self.assertNotIn("Progressive Backpack", item_names)
11+
12+
def test_no_backpack_locations(self):
13+
location_names = {location.name for location in self.multiworld.get_locations()}
14+
self.assertNotIn("Large Pack", location_names)
15+
self.assertNotIn("Deluxe Pack", location_names)
16+
17+
18+
class TestBackpackProgressive(SVTestBase):
19+
options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_progressive}
20+
21+
def test_backpack_is_in_pool_2_times(self):
22+
item_names = [item.name for item in self.multiworld.get_items()]
23+
self.assertEqual(item_names.count("Progressive Backpack"), 2)
24+
25+
def test_2_backpack_locations(self):
26+
location_names = {location.name for location in self.multiworld.get_locations()}
27+
self.assertIn("Large Pack", location_names)
28+
self.assertIn("Deluxe Pack", location_names)
29+
30+
31+
class TestBackpackEarlyProgressive(SVTestBase):
32+
options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_early_progressive}
33+
34+
def test_backpack_is_in_pool_2_times(self):
35+
item_names = [item.name for item in self.multiworld.get_items()]
36+
self.assertEqual(item_names.count("Progressive Backpack"), 2)
37+
38+
def test_2_backpack_locations(self):
39+
location_names = {location.name for location in self.multiworld.get_locations()}
40+
self.assertIn("Large Pack", location_names)
41+
self.assertIn("Deluxe Pack", location_names)
42+
43+
def test_progressive_backpack_is_in_early_pool(self):
44+
self.assertIn("Progressive Backpack", self.multiworld.early_items[1])

worlds/stardew_valley/test/TestOptions.py

-29
Original file line numberDiff line numberDiff line change
@@ -113,35 +113,6 @@ def test_given_progressive_when_generate_then_3_progressive_seasons_are_in_the_p
113113
self.assertEqual(items.count(Season.progressive), 3)
114114

115115

116-
class TestBackpackProgression(SVTestBase):
117-
def test_given_vanilla_when_generate_then_no_backpack_in_pool(self):
118-
world_options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_vanilla}
119-
multi_world = setup_solo_multiworld(world_options)
120-
121-
assert "Progressive Backpack" not in {item.name for item in multi_world.get_items()}
122-
123-
def test_given_progressive_when_generate_then_progressive_backpack_is_in_pool_two_times(self):
124-
world_options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_progressive}
125-
multi_world = setup_solo_multiworld(world_options)
126-
items = [item.name for item in multi_world.get_items()]
127-
self.assertEqual(items.count("Progressive Backpack"), 2)
128-
129-
def test_given_progressive_when_generate_then_backpack_upgrades_are_locations(self):
130-
world_options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_progressive}
131-
multi_world = setup_solo_multiworld(world_options)
132-
133-
locations = {locations.name for locations in multi_world.get_locations(1)}
134-
self.assertIn("Large Pack", locations)
135-
self.assertIn("Deluxe Pack", locations)
136-
137-
def test_given_early_progressive_when_generate_then_progressive_backpack_is_in_early_pool(self):
138-
world_options = {
139-
options.BackpackProgression.internal_name: options.BackpackProgression.option_early_progressive}
140-
multi_world = setup_solo_multiworld(world_options)
141-
142-
self.assertIn("Progressive Backpack", multi_world.early_items[1])
143-
144-
145116
class TestToolProgression(SVTestBase):
146117
def test_given_vanilla_when_generate_then_no_tool_in_pool(self):
147118
world_options = {options.ToolProgression.internal_name: options.ToolProgression.option_vanilla}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from .. import SVTestBase
2+
from ... import options
3+
from ...mods.mod_data import ModNames
4+
5+
6+
class TestBiggerBackpackVanilla(SVTestBase):
7+
options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_vanilla,
8+
options.Mods.internal_name: ModNames.big_backpack}
9+
10+
def test_no_backpack_in_pool(self):
11+
item_names = {item.name for item in self.multiworld.get_items()}
12+
self.assertNotIn("Progressive Backpack", item_names)
13+
14+
def test_no_backpack_locations(self):
15+
location_names = {location.name for location in self.multiworld.get_locations()}
16+
self.assertNotIn("Large Pack", location_names)
17+
self.assertNotIn("Deluxe Pack", location_names)
18+
self.assertNotIn("Premium Pack", location_names)
19+
20+
21+
class TestBiggerBackpackProgressive(SVTestBase):
22+
options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_progressive,
23+
options.Mods.internal_name: ModNames.big_backpack}
24+
25+
def test_backpack_is_in_pool_3_times(self):
26+
item_names = [item.name for item in self.multiworld.get_items()]
27+
self.assertEqual(item_names.count("Progressive Backpack"), 3)
28+
29+
def test_3_backpack_locations(self):
30+
location_names = {location.name for location in self.multiworld.get_locations()}
31+
self.assertIn("Large Pack", location_names)
32+
self.assertIn("Deluxe Pack", location_names)
33+
self.assertIn("Premium Pack", location_names)
34+
35+
36+
class TestBiggerBackpackEarlyProgressive(SVTestBase):
37+
options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_early_progressive,
38+
options.Mods.internal_name: ModNames.big_backpack}
39+
40+
def test_backpack_is_in_pool_3_times(self):
41+
item_names = [item.name for item in self.multiworld.get_items()]
42+
self.assertEqual(item_names.count("Progressive Backpack"), 3)
43+
44+
def test_3_backpack_locations(self):
45+
location_names = {location.name for location in self.multiworld.get_locations()}
46+
self.assertIn("Large Pack", location_names)
47+
self.assertIn("Deluxe Pack", location_names)
48+
self.assertIn("Premium Pack", location_names)
49+
50+
def test_progressive_backpack_is_in_early_pool(self):
51+
self.assertIn("Progressive Backpack", self.multiworld.early_items[1])

worlds/stardew_valley/test/TestMods.py worlds/stardew_valley/test/mods/TestMods.py

+8-22
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
import sys
55

66
from BaseClasses import MultiWorld
7-
from . import setup_solo_multiworld
8-
from .TestOptions import basic_checks, SVTestBase
9-
from .. import options, locations, items, Group, ItemClassification, StardewOptions
10-
from ..regions import RandomizationFlag, create_final_connections, randomize_connections, create_final_regions
11-
from ..items import item_table, items_by_group
12-
from ..locations import location_table, LocationTags
13-
from ..options import stardew_valley_option_classes, Mods, EntranceRandomization
7+
from worlds.stardew_valley.test import setup_solo_multiworld
8+
from worlds.stardew_valley.test.TestOptions import basic_checks, SVTestBase
9+
from worlds.stardew_valley import options, locations, items, Group, ItemClassification, StardewOptions
10+
from worlds.stardew_valley.mods.mod_data import ModNames
11+
from worlds.stardew_valley.regions import RandomizationFlag, create_final_connections, randomize_connections, create_final_regions
12+
from worlds.stardew_valley.items import item_table, items_by_group
13+
from worlds.stardew_valley.locations import location_table, LocationTags
14+
from worlds.stardew_valley.options import stardew_valley_option_classes, Mods, EntranceRandomization
1415

1516
mod_list = ["DeepWoods", "Tractor Mod", "Bigger Backpack",
1617
"Luck Skill", "Magic", "Socializing Skill", "Archaeology",
@@ -78,21 +79,6 @@ def test_given_mod_names_when_generate_paired_with_other_options_then_basic_chec
7879
check_stray_mod_items(mod, self, multiworld)
7980

8081

81-
class TestGivenModdedProgressiveBackpack(SVTestBase):
82-
options = {options.BackpackProgression.internal_name: options.BackpackProgression.option_progressive,
83-
options.Mods.internal_name: "Bigger Backpack"}
84-
85-
def test_when_generate_world_then_three_progressive_backpack_are_added(self):
86-
self.assertEqual(self.multiworld.itempool.count(self.world.create_item("Progressive Backpack")), 3)
87-
88-
def test_when_generate_world_then_all_backpack_locations_are_added(self):
89-
created_locations = {location.name for location in self.multiworld.get_locations(1)}
90-
backpacks_exist = [location.name in created_locations
91-
for location in locations.locations_by_tag[LocationTags.BACKPACK]]
92-
all_exist = all(backpacks_exist)
93-
self.assertTrue(all_exist)
94-
95-
9682
class TestBaseItemGeneration(SVTestBase):
9783
options = {
9884
options.Friendsanity.internal_name: options.Friendsanity.option_all_with_marriage,

worlds/stardew_valley/test/mods/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)