Tests: world test base class (#1116)
* world test base class * game not instance property * I would have guessed that this only collected 1. * game property * move SoE tests into worlds * don't force auto world setup
This commit is contained in:
		
							
								
								
									
										22
									
								
								test/worlds/soe/TestAccess.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								test/worlds/soe/TestAccess.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| import typing | ||||
| from . import SoETestBase | ||||
|  | ||||
|  | ||||
| class AccessTest(SoETestBase): | ||||
|     @staticmethod | ||||
|     def _resolveGourds(gourds: typing.Dict[str, typing.Iterable[int]]): | ||||
|         return [f"{name} #{number}" for name, numbers in gourds.items() for number in numbers] | ||||
|  | ||||
|     def testBronzeAxe(self): | ||||
|         gourds = { | ||||
|             "Pyramid bottom": (118, 121, 122, 123, 124, 125), | ||||
|             "Pyramid top": (140,) | ||||
|         } | ||||
|         locations = ["Rimsala"] + self._resolveGourds(gourds) | ||||
|         items = [["Bronze Axe"]] | ||||
|         self.assertAccessDependency(locations, items) | ||||
|  | ||||
|     def testBronzeSpearPlus(self): | ||||
|         locations = ["Megataur"] | ||||
|         items = [["Bronze Spear"], ["Lance (Weapon)"], ["Laser Lance"]] | ||||
|         self.assertAccessDependency(locations, items) | ||||
							
								
								
									
										53
									
								
								test/worlds/soe/TestGoal.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								test/worlds/soe/TestGoal.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| from . import SoETestBase | ||||
|  | ||||
|  | ||||
| class TestFragmentGoal(SoETestBase): | ||||
|     options = { | ||||
|         "energy_core": "fragments", | ||||
|         "available_fragments": 21, | ||||
|         "required_fragments": 20, | ||||
|     } | ||||
|  | ||||
|     def testFragments(self): | ||||
|         self.collect_by_name(["Gladiator Sword", "Diamond Eye", "Wheel", "Gauge"]) | ||||
|         self.assertBeatable(False)  # 0 fragments | ||||
|         fragments = self.get_items_by_name("Energy Core Fragment") | ||||
|         victory = self.get_item_by_name("Victory") | ||||
|         self.collect(fragments[:-2])  # 1 too few | ||||
|         self.assertEqual(self.count("Energy Core Fragment"), 19) | ||||
|         self.assertBeatable(False) | ||||
|         self.collect(fragments[-2:-1])  # exact | ||||
|         self.assertEqual(self.count("Energy Core Fragment"), 20) | ||||
|         self.assertBeatable(True) | ||||
|         self.remove([victory])  # reset | ||||
|         self.collect(fragments[-1:])  # 1 extra | ||||
|         self.assertEqual(self.count("Energy Core Fragment"), 21) | ||||
|         self.assertBeatable(True) | ||||
|  | ||||
|     def testNoWeapon(self): | ||||
|         self.collect_by_name(["Diamond Eye", "Wheel", "Gauge", "Energy Core Fragment"]) | ||||
|         self.assertBeatable(False) | ||||
|  | ||||
|     def testNoRocket(self): | ||||
|         self.collect_by_name(["Gladiator Sword", "Diamond Eye", "Wheel", "Energy Core Fragment"]) | ||||
|         self.assertBeatable(False) | ||||
|  | ||||
|  | ||||
| class TestShuffleGoal(SoETestBase): | ||||
|     options = { | ||||
|         "energy_core": "shuffle", | ||||
|     } | ||||
|  | ||||
|     def testCore(self): | ||||
|         self.collect_by_name(["Gladiator Sword", "Diamond Eye", "Wheel", "Gauge"]) | ||||
|         self.assertBeatable(False) | ||||
|         self.collect_by_name(["Energy Core"]) | ||||
|         self.assertBeatable(True) | ||||
|  | ||||
|     def testNoWeapon(self): | ||||
|         self.collect_by_name(["Diamond Eye", "Wheel", "Gauge", "Energy Core"]) | ||||
|         self.assertBeatable(False) | ||||
|  | ||||
|     def testNoRocket(self): | ||||
|         self.collect_by_name(["Gladiator Sword", "Diamond Eye", "Wheel", "Energy Core"]) | ||||
|         self.assertBeatable(False) | ||||
							
								
								
									
										5
									
								
								test/worlds/soe/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/worlds/soe/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| from test.worlds.test_base import WorldTestBase | ||||
|  | ||||
|  | ||||
| class SoETestBase(WorldTestBase): | ||||
|     game = "Secret of Evermore" | ||||
		Reference in New Issue
	
	Block a user
	 Doug Hoskisson
					Doug Hoskisson