mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
115 lines
4.0 KiB
Python
115 lines
4.0 KiB
Python
![]() |
from typing import Dict
|
||
|
from BaseClasses import ItemClassification
|
||
|
from Fill import distribute_items_restrictive
|
||
|
from ..Items import FillerItemRarity, filler_data
|
||
|
from . import CivVITestBase
|
||
|
|
||
|
|
||
|
class TestGoodyHutsIncluded(CivVITestBase):
|
||
|
auto_construct = False
|
||
|
options = {
|
||
|
"progressive_eras": "true",
|
||
|
"progressive_districts": "true",
|
||
|
"shuffle_goody_hut_rewards": "true",
|
||
|
}
|
||
|
|
||
|
def test_goody_huts_get_included(self) -> None:
|
||
|
self.world_setup()
|
||
|
self.world.generate_early()
|
||
|
distribute_items_restrictive(self.multiworld)
|
||
|
expected_goody_huts = 10
|
||
|
found = 0
|
||
|
for location in self.multiworld.get_locations(self.player):
|
||
|
if location.name.startswith("GOODY_HUT_"):
|
||
|
found += 1
|
||
|
self.assertEqual(found, expected_goody_huts)
|
||
|
|
||
|
|
||
|
class TestGoodyHutsExcluded(CivVITestBase):
|
||
|
auto_construct = False
|
||
|
options = {
|
||
|
"progressive_eras": "true",
|
||
|
"progressive_districts": "true",
|
||
|
"shuffle_goody_hut_rewards": "false",
|
||
|
}
|
||
|
|
||
|
def test_goody_huts_are_not_included(self) -> None:
|
||
|
self.world_setup()
|
||
|
self.world.generate_early()
|
||
|
distribute_items_restrictive(self.multiworld)
|
||
|
found_goody_huts = 0
|
||
|
for location in self.multiworld.get_locations(self.player):
|
||
|
if location.name.startswith("GOODY_HUT_"):
|
||
|
found_goody_huts += 1
|
||
|
self.assertEqual(found_goody_huts, 0)
|
||
|
|
||
|
|
||
|
class TestFillerItemsIncludedByRarity(CivVITestBase):
|
||
|
auto_construct = False
|
||
|
options = {
|
||
|
"progressive_eras": "true",
|
||
|
"progressive_districts": "true",
|
||
|
"shuffle_goody_hut_rewards": "true",
|
||
|
"boostsanity": "true"
|
||
|
}
|
||
|
|
||
|
def test_filler_items_are_included_by_rarity(self) -> None:
|
||
|
self.world_setup()
|
||
|
self.world.generate_early()
|
||
|
distribute_items_restrictive(self.multiworld)
|
||
|
rarity_counts: Dict[FillerItemRarity, int] = {
|
||
|
FillerItemRarity.COMMON: 0,
|
||
|
FillerItemRarity.UNCOMMON: 0,
|
||
|
FillerItemRarity.RARE: 0,
|
||
|
}
|
||
|
total_filler_items = 0
|
||
|
for item in self.multiworld.itempool:
|
||
|
if item.classification == ItemClassification.filler:
|
||
|
rarity = filler_data[item.name].rarity
|
||
|
rarity_counts[rarity] += 1
|
||
|
total_filler_items += 1
|
||
|
|
||
|
expected_counts = {
|
||
|
FillerItemRarity.COMMON: 101,
|
||
|
FillerItemRarity.UNCOMMON: 27,
|
||
|
FillerItemRarity.RARE: 4,
|
||
|
}
|
||
|
|
||
|
for rarity, expected in expected_counts.items():
|
||
|
self.assertEqual(rarity_counts[rarity], expected, f"Expected {expected} {rarity} items, found {rarity_counts[rarity]}")
|
||
|
|
||
|
|
||
|
class TestFillerItemsIncludedByRarityWithoutBoostsanity(CivVITestBase):
|
||
|
auto_construct = False
|
||
|
options = {
|
||
|
"progressive_eras": "true",
|
||
|
"progressive_districts": "true",
|
||
|
"shuffle_goody_hut_rewards": "true",
|
||
|
"boostsanity": "false"
|
||
|
}
|
||
|
|
||
|
def test_filler_items_are_included_by_rarity_without_boostsanity(self) -> None:
|
||
|
self.world_setup()
|
||
|
self.world.generate_early()
|
||
|
distribute_items_restrictive(self.multiworld)
|
||
|
rarity_counts: Dict[FillerItemRarity, int] = {
|
||
|
FillerItemRarity.COMMON: 0,
|
||
|
FillerItemRarity.UNCOMMON: 0,
|
||
|
FillerItemRarity.RARE: 0,
|
||
|
}
|
||
|
total_filler_items = 0
|
||
|
for item in self.multiworld.itempool:
|
||
|
if item.classification == ItemClassification.filler:
|
||
|
rarity = filler_data[item.name].rarity
|
||
|
rarity_counts[rarity] += 1
|
||
|
total_filler_items += 1
|
||
|
|
||
|
expected_counts = {
|
||
|
FillerItemRarity.COMMON: 7,
|
||
|
FillerItemRarity.UNCOMMON: 2,
|
||
|
FillerItemRarity.RARE: 1,
|
||
|
}
|
||
|
|
||
|
for rarity, expected in expected_counts.items():
|
||
|
self.assertEqual(rarity_counts[rarity], expected, f"Expected {expected} {rarity} items, found {rarity_counts[rarity]}")
|