| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | from typing import Union, List | 
					
						
							|  |  |  | from unittest import TestCase | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from BaseClasses import MultiWorld | 
					
						
							|  |  |  | from ... import item_table, location_table | 
					
						
							|  |  |  | from ...mods.mod_data import ModNames | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ModAssertMixin(TestCase): | 
					
						
							|  |  |  |     def assert_stray_mod_items(self, chosen_mods: Union[List[str], str], multiworld: MultiWorld): | 
					
						
							|  |  |  |         if isinstance(chosen_mods, str): | 
					
						
							|  |  |  |             chosen_mods = [chosen_mods] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ModNames.jasper in chosen_mods: | 
					
						
							|  |  |  |             # Jasper is a weird case because it shares NPC w/ SVE... | 
					
						
							|  |  |  |             chosen_mods.append(ModNames.sve) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for multiworld_item in multiworld.get_items(): | 
					
						
							|  |  |  |             item = item_table[multiworld_item.name] | 
					
						
							|  |  |  |             self.assertTrue(item.mod_name is None or item.mod_name in chosen_mods, | 
					
						
							|  |  |  |                             f"Item {item.name} has is from mod {item.mod_name}. Allowed mods are {chosen_mods}.") | 
					
						
							|  |  |  |         for multiworld_location in multiworld.get_locations(): | 
					
						
							| 
									
										
										
										
											2024-04-14 13:37:48 -05:00
										 |  |  |             if multiworld_location.address is None: | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                 continue | 
					
						
							|  |  |  |             location = location_table[multiworld_location.name] | 
					
						
							|  |  |  |             self.assertTrue(location.mod_name is None or location.mod_name in chosen_mods) |