| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  | from . import KDL3TestBase | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestFastGoal(KDL3TestBase): | 
					
						
							|  |  |  |     options = { | 
					
						
							|  |  |  |         "open_world": False, | 
					
						
							|  |  |  |         "goal_speed": "fast", | 
					
						
							| 
									
										
										
										
											2024-08-31 06:15:00 -05:00
										 |  |  |         "max_heart_stars": 30, | 
					
						
							| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  |         "heart_stars_required": 50, | 
					
						
							|  |  |  |         "filler_percentage": 0, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-31 06:15:00 -05:00
										 |  |  |     def test_goal(self) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  |         self.assertBeatable(False) | 
					
						
							|  |  |  |         heart_stars = self.get_items_by_name("Heart Star") | 
					
						
							|  |  |  |         self.collect(heart_stars[0:14]) | 
					
						
							|  |  |  |         self.assertEqual(self.count("Heart Star"), 14, str(self.multiworld.seed)) | 
					
						
							|  |  |  |         self.assertBeatable(False) | 
					
						
							|  |  |  |         self.collect(heart_stars[14:15]) | 
					
						
							|  |  |  |         self.assertEqual(self.count("Heart Star"), 15, str(self.multiworld.seed)) | 
					
						
							|  |  |  |         self.assertBeatable(True) | 
					
						
							|  |  |  |         self.remove([self.get_item_by_name("Love-Love Rod")]) | 
					
						
							|  |  |  |         self.collect_by_name("Kine")  # Ensure a little more progress, but leave out cutter and burning | 
					
						
							|  |  |  |         self.collect(heart_stars[15:]) | 
					
						
							|  |  |  |         self.assertBeatable(True) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestNormalGoal(KDL3TestBase): | 
					
						
							|  |  |  |     # TODO: open world tests | 
					
						
							|  |  |  |     options = { | 
					
						
							|  |  |  |         "open_world": False, | 
					
						
							|  |  |  |         "goal_speed": "normal", | 
					
						
							| 
									
										
										
										
											2024-08-31 06:15:00 -05:00
										 |  |  |         "max_heart_stars": 30, | 
					
						
							| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  |         "heart_stars_required": 50, | 
					
						
							|  |  |  |         "filler_percentage": 0, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-31 06:15:00 -05:00
										 |  |  |     def test_goal(self) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  |         self.assertBeatable(False) | 
					
						
							|  |  |  |         heart_stars = self.get_items_by_name("Heart Star") | 
					
						
							|  |  |  |         self.collect(heart_stars[0:14]) | 
					
						
							|  |  |  |         self.assertEqual(self.count("Heart Star"), 14, str(self.multiworld.seed)) | 
					
						
							|  |  |  |         self.assertBeatable(False) | 
					
						
							|  |  |  |         self.collect(heart_stars[14:15]) | 
					
						
							|  |  |  |         self.assertEqual(self.count("Heart Star"), 15, str(self.multiworld.seed)) | 
					
						
							|  |  |  |         self.assertBeatable(False) | 
					
						
							|  |  |  |         self.collect_by_name(["Burning", "Cutter", "Kine"]) | 
					
						
							|  |  |  |         self.assertBeatable(True) | 
					
						
							|  |  |  |         self.remove([self.get_item_by_name("Love-Love Rod")]) | 
					
						
							|  |  |  |         self.collect(heart_stars) | 
					
						
							|  |  |  |         self.assertEqual(self.count("Heart Star"), 30, str(self.multiworld.seed)) | 
					
						
							|  |  |  |         self.assertBeatable(True) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-31 06:15:00 -05:00
										 |  |  |     def test_kine(self) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  |         self.collect_by_name(["Cutter", "Burning", "Heart Star"]) | 
					
						
							|  |  |  |         self.assertBeatable(False) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-31 06:15:00 -05:00
										 |  |  |     def test_cutter(self) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  |         self.collect_by_name(["Kine", "Burning", "Heart Star"]) | 
					
						
							|  |  |  |         self.assertBeatable(False) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-31 06:15:00 -05:00
										 |  |  |     def test_burning(self) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-05 09:59:55 -06:00
										 |  |  |         self.collect_by_name(["Cutter", "Kine", "Heart Star"]) | 
					
						
							|  |  |  |         self.assertBeatable(False) |