| 
									
										
										
										
											2022-05-10 19:40:43 +02:00
										 |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2022-05-10 19:43:44 +02:00
										 |  |  | from worlds.AutoWorld import AutoWorldRegister | 
					
						
							| 
									
										
										
										
											2022-05-10 19:40:43 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-15 15:46:10 -06:00
										 |  |  | from . import setup_solo_multiworld | 
					
						
							| 
									
										
										
										
											2022-05-10 19:40:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-10 19:43:44 +02:00
										 |  |  | class TestImplemented(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2023-10-22 06:00:27 -05:00
										 |  |  |     def test_completion_condition(self): | 
					
						
							| 
									
										
										
										
											2022-05-10 19:40:43 +02:00
										 |  |  |         """Ensure a completion condition is set that has requirements.""" | 
					
						
							| 
									
										
										
										
											2023-02-12 19:05:52 -06:00
										 |  |  |         for game_name, world_type in AutoWorldRegister.world_types.items(): | 
					
						
							| 
									
										
										
										
											2023-02-23 20:16:10 -06:00
										 |  |  |             if not world_type.hidden and game_name not in {"Sudoku"}: | 
					
						
							| 
									
										
										
										
											2023-02-12 19:05:52 -06:00
										 |  |  |                 with self.subTest(game_name): | 
					
						
							| 
									
										
										
										
											2023-02-15 15:46:10 -06:00
										 |  |  |                     multiworld = setup_solo_multiworld(world_type) | 
					
						
							| 
									
										
										
										
											2023-02-12 19:05:52 -06:00
										 |  |  |                     self.assertFalse(multiworld.completion_condition[1](multiworld.state)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-22 06:00:27 -05:00
										 |  |  |     def test_entrance_parents(self): | 
					
						
							| 
									
										
										
										
											2023-02-12 19:05:52 -06:00
										 |  |  |         """Tests that the parents of created Entrances match the exiting Region.""" | 
					
						
							|  |  |  |         for game_name, world_type in AutoWorldRegister.world_types.items(): | 
					
						
							| 
									
										
										
										
											2023-02-15 15:46:10 -06:00
										 |  |  |             if not world_type.hidden: | 
					
						
							| 
									
										
										
										
											2023-02-12 19:05:52 -06:00
										 |  |  |                 with self.subTest(game_name): | 
					
						
							| 
									
										
										
										
											2023-02-15 15:46:10 -06:00
										 |  |  |                     multiworld = setup_solo_multiworld(world_type) | 
					
						
							| 
									
										
										
										
											2023-02-12 19:05:52 -06:00
										 |  |  |                     for region in multiworld.regions: | 
					
						
							|  |  |  |                         for exit in region.exits: | 
					
						
							|  |  |  |                             self.assertEqual(exit.parent_region, region) | 
					
						
							| 
									
										
										
										
											2023-02-16 00:28:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-22 06:00:27 -05:00
										 |  |  |     def test_stage_methods(self): | 
					
						
							| 
									
										
										
										
											2023-02-16 00:28:02 +01:00
										 |  |  |         """Tests that worlds don't try to implement certain steps that are only ever called as stage.""" | 
					
						
							|  |  |  |         for game_name, world_type in AutoWorldRegister.world_types.items(): | 
					
						
							|  |  |  |             if not world_type.hidden: | 
					
						
							|  |  |  |                 with self.subTest(game_name): | 
					
						
							|  |  |  |                     for method in ("assert_generate",): | 
					
						
							|  |  |  |                         self.assertFalse(hasattr(world_type, method), | 
					
						
							|  |  |  |                                          f"{method} must be implemented as a @classmethod named stage_{method}.") |