Tests: add "EmptyStateCanReachSomething"
This commit is contained in:
		| @@ -1,30 +0,0 @@ | ||||
| import unittest | ||||
| from argparse import Namespace | ||||
| from BaseClasses import MultiWorld | ||||
| from worlds.AutoWorld import AutoWorldRegister, call_all | ||||
|  | ||||
|  | ||||
| class TestBase(unittest.TestCase): | ||||
|     _state_cache = {} | ||||
|     gen_steps = ["generate_early", "create_regions", "create_items", "set_rules", "generate_basic", "pre_fill"] | ||||
|  | ||||
|     def testAllStateCanReachEverything(self): | ||||
|         for game_name, world_type in AutoWorldRegister.world_types.items(): | ||||
|             if game_name != "Ori and the Blind Forest":  # TODO: fix Ori Logic | ||||
|                 with self.subTest("Game", game=game_name): | ||||
|  | ||||
|                     world = MultiWorld(1) | ||||
|                     world.game[1] = game_name | ||||
|                     world.player_name = {1: "Tester"} | ||||
|                     world.set_seed() | ||||
|                     args = Namespace() | ||||
|                     for name, option in world_type.options.items(): | ||||
|                         setattr(args, name, {1: option.from_any(option.default)}) | ||||
|                     world.set_options(args) | ||||
|                     world.set_default_common_options() | ||||
|                     for step in self.gen_steps: | ||||
|                         call_all(world, step) | ||||
|                     state = world.get_all_state(False) | ||||
|                     for location in world.get_locations(): | ||||
|                         with self.subTest("Location should be reached", location=location): | ||||
|                             self.assertTrue(location.can_reach(state)) | ||||
							
								
								
									
										33
									
								
								test/general/TestReachability.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								test/general/TestReachability.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| import unittest | ||||
|  | ||||
| from BaseClasses import CollectionState | ||||
| from worlds.AutoWorld import AutoWorldRegister | ||||
|  | ||||
| from . import setup_default_world | ||||
|  | ||||
| class TestBase(unittest.TestCase): | ||||
|     _state_cache = {} | ||||
|     gen_steps = ["generate_early", "create_regions", "create_items", "set_rules", "generate_basic", "pre_fill"] | ||||
|  | ||||
|     def testAllStateCanReachEverything(self): | ||||
|         for game_name, world_type in AutoWorldRegister.world_types.items(): | ||||
|             if game_name != "Ori and the Blind Forest":  # TODO: fix Ori Logic | ||||
|                 with self.subTest("Game", game=game_name): | ||||
|                     world = setup_default_world(world_type) | ||||
|                     state = world.get_all_state(False) | ||||
|                     for location in world.get_locations(): | ||||
|                         with self.subTest("Location should be reached", location=location): | ||||
|                             self.assertTrue(location.can_reach(state)) | ||||
|  | ||||
|     def testEmptyStateCanReachSomething(self): | ||||
|         for game_name, world_type in AutoWorldRegister.world_types.items(): | ||||
|             if game_name != "Archipelago": | ||||
|                 with self.subTest("Game", game=game_name): | ||||
|                     world = setup_default_world(world_type) | ||||
|                     state = CollectionState(world) | ||||
|                     locations = set() | ||||
|                     for location in world.get_locations(): | ||||
|                         if location.can_reach(state): | ||||
|                             locations.add(location) | ||||
|                     self.assertGreater(len(locations), 0, | ||||
|                                        msg="Need to be able to reach at least one location to get started.") | ||||
							
								
								
									
										21
									
								
								test/general/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/general/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| from argparse import Namespace | ||||
|  | ||||
| from BaseClasses import MultiWorld | ||||
| from worlds.AutoWorld import call_all | ||||
|  | ||||
| gen_steps = ["generate_early", "create_regions", "create_items", "set_rules", "generate_basic", "pre_fill"] | ||||
|  | ||||
|  | ||||
| def setup_default_world(world_type): | ||||
|     world = MultiWorld(1) | ||||
|     world.game[1] = world_type.game | ||||
|     world.player_name = {1: "Tester"} | ||||
|     world.set_seed() | ||||
|     args = Namespace() | ||||
|     for name, option in world_type.options.items(): | ||||
|         setattr(args, name, {1: option.from_any(option.default)}) | ||||
|     world.set_options(args) | ||||
|     world.set_default_common_options() | ||||
|     for step in gen_steps: | ||||
|         call_all(world, step) | ||||
|     return world | ||||
		Reference in New Issue
	
	Block a user
	 Fabian Dill
					Fabian Dill