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]}") |