parent
37c5865c0e
commit
ad445629bd
|
@ -19,13 +19,13 @@ class WorldTestBase(unittest.TestCase):
|
||||||
if self.auto_construct:
|
if self.auto_construct:
|
||||||
self.world_setup()
|
self.world_setup()
|
||||||
|
|
||||||
def world_setup(self) -> None:
|
def world_setup(self, seed: typing.Optional[int] = None) -> None:
|
||||||
if not hasattr(self, "game"):
|
if not hasattr(self, "game"):
|
||||||
raise NotImplementedError("didn't define game name")
|
raise NotImplementedError("didn't define game name")
|
||||||
self.world = MultiWorld(1)
|
self.world = MultiWorld(1)
|
||||||
self.world.game[1] = self.game
|
self.world.game[1] = self.game
|
||||||
self.world.player_name = {1: "Tester"}
|
self.world.player_name = {1: "Tester"}
|
||||||
self.world.set_seed()
|
self.world.set_seed(seed)
|
||||||
args = Namespace()
|
args = Namespace()
|
||||||
for name, option in AutoWorld.AutoWorldRegister.world_types[self.game].option_definitions.items():
|
for name, option in AutoWorld.AutoWorldRegister.world_types[self.game].option_definitions.items():
|
||||||
setattr(args, name, {
|
setattr(args, name, {
|
||||||
|
|
|
@ -10,7 +10,7 @@ class TestGoalVanilla(ZillionTestBase):
|
||||||
"floppy_req": 6,
|
"floppy_req": 6,
|
||||||
}
|
}
|
||||||
|
|
||||||
def test_floppies(self):
|
def test_floppies(self) -> None:
|
||||||
self.collect_by_name(["Apple", "Champ", "Red ID Card"])
|
self.collect_by_name(["Apple", "Champ", "Red ID Card"])
|
||||||
self.assertBeatable(False) # 0 floppies
|
self.assertBeatable(False) # 0 floppies
|
||||||
floppies = self.get_items_by_name("Floppy Disk")
|
floppies = self.get_items_by_name("Floppy Disk")
|
||||||
|
@ -26,19 +26,20 @@ class TestGoalVanilla(ZillionTestBase):
|
||||||
self.assertEqual(self.count("Floppy Disk"), 7)
|
self.assertEqual(self.count("Floppy Disk"), 7)
|
||||||
self.assertBeatable(True)
|
self.assertBeatable(True)
|
||||||
|
|
||||||
def test_with_everything(self):
|
def test_with_everything(self) -> None:
|
||||||
self.collect_by_name(["Apple", "Champ", "Red ID Card", "Floppy Disk"])
|
self.collect_by_name(["Apple", "Champ", "Red ID Card", "Floppy Disk"])
|
||||||
self.assertBeatable(True)
|
self.assertBeatable(True)
|
||||||
|
|
||||||
def test_no_jump(self):
|
def test_no_jump(self) -> None:
|
||||||
self.collect_by_name(["Champ", "Red ID Card", "Floppy Disk"])
|
self.collect_by_name(["Champ", "Red ID Card", "Floppy Disk"])
|
||||||
self.assertBeatable(False)
|
self.assertBeatable(False)
|
||||||
|
|
||||||
def test_no_gun(self):
|
def test_no_gun(self) -> None:
|
||||||
|
self.ensure_gun_3_requirement()
|
||||||
self.collect_by_name(["Apple", "Red ID Card", "Floppy Disk"])
|
self.collect_by_name(["Apple", "Red ID Card", "Floppy Disk"])
|
||||||
self.assertBeatable(False)
|
self.assertBeatable(False)
|
||||||
|
|
||||||
def test_no_red(self):
|
def test_no_red(self) -> None:
|
||||||
self.collect_by_name(["Apple", "Champ", "Floppy Disk"])
|
self.collect_by_name(["Apple", "Champ", "Floppy Disk"])
|
||||||
self.assertBeatable(False)
|
self.assertBeatable(False)
|
||||||
|
|
||||||
|
@ -50,7 +51,7 @@ class TestGoalBalanced(ZillionTestBase):
|
||||||
"gun_levels": "balanced",
|
"gun_levels": "balanced",
|
||||||
}
|
}
|
||||||
|
|
||||||
def test_jump(self):
|
def test_jump(self) -> None:
|
||||||
self.collect_by_name(["Red ID Card", "Floppy Disk", "Zillion"])
|
self.collect_by_name(["Red ID Card", "Floppy Disk", "Zillion"])
|
||||||
self.assertBeatable(False) # not enough jump
|
self.assertBeatable(False) # not enough jump
|
||||||
opas = self.get_items_by_name("Opa-Opa")
|
opas = self.get_items_by_name("Opa-Opa")
|
||||||
|
@ -60,7 +61,8 @@ class TestGoalBalanced(ZillionTestBase):
|
||||||
self.collect(opas[1:])
|
self.collect(opas[1:])
|
||||||
self.assertBeatable(True)
|
self.assertBeatable(True)
|
||||||
|
|
||||||
def test_guns(self):
|
def test_guns(self) -> None:
|
||||||
|
self.ensure_gun_3_requirement()
|
||||||
self.collect_by_name(["Red ID Card", "Floppy Disk", "Opa-Opa"])
|
self.collect_by_name(["Red ID Card", "Floppy Disk", "Opa-Opa"])
|
||||||
self.assertBeatable(False) # not enough gun
|
self.assertBeatable(False) # not enough gun
|
||||||
guns = self.get_items_by_name("Zillion")
|
guns = self.get_items_by_name("Zillion")
|
||||||
|
@ -78,7 +80,7 @@ class TestGoalRestrictive(ZillionTestBase):
|
||||||
"gun_levels": "restrictive",
|
"gun_levels": "restrictive",
|
||||||
}
|
}
|
||||||
|
|
||||||
def test_jump(self):
|
def test_jump(self) -> None:
|
||||||
self.collect_by_name(["Champ", "Red ID Card", "Floppy Disk", "Zillion"])
|
self.collect_by_name(["Champ", "Red ID Card", "Floppy Disk", "Zillion"])
|
||||||
self.assertBeatable(False) # not enough jump
|
self.assertBeatable(False) # not enough jump
|
||||||
self.collect_by_name("Opa-Opa")
|
self.collect_by_name("Opa-Opa")
|
||||||
|
@ -86,7 +88,8 @@ class TestGoalRestrictive(ZillionTestBase):
|
||||||
self.collect_by_name("Apple")
|
self.collect_by_name("Apple")
|
||||||
self.assertBeatable(True)
|
self.assertBeatable(True)
|
||||||
|
|
||||||
def test_guns(self):
|
def test_guns(self) -> None:
|
||||||
|
self.ensure_gun_3_requirement()
|
||||||
self.collect_by_name(["Apple", "Red ID Card", "Floppy Disk", "Opa-Opa"])
|
self.collect_by_name(["Apple", "Red ID Card", "Floppy Disk", "Opa-Opa"])
|
||||||
self.assertBeatable(False) # not enough gun
|
self.assertBeatable(False) # not enough gun
|
||||||
self.collect_by_name("Zillion")
|
self.collect_by_name("Zillion")
|
||||||
|
@ -104,15 +107,17 @@ class TestGoalAppleStart(ZillionTestBase):
|
||||||
"zillion_count": 5
|
"zillion_count": 5
|
||||||
}
|
}
|
||||||
|
|
||||||
def test_guns_jj_first(self):
|
def test_guns_jj_first(self) -> None:
|
||||||
""" with low gun levels, 5 Zillion is enough to get JJ to gun 3 """
|
""" with low gun levels, 5 Zillion is enough to get JJ to gun 3 """
|
||||||
|
self.ensure_gun_3_requirement()
|
||||||
self.collect_by_name(["JJ", "Red ID Card", "Floppy Disk", "Opa-Opa"])
|
self.collect_by_name(["JJ", "Red ID Card", "Floppy Disk", "Opa-Opa"])
|
||||||
self.assertBeatable(False) # not enough gun
|
self.assertBeatable(False) # not enough gun
|
||||||
self.collect_by_name("Zillion")
|
self.collect_by_name("Zillion")
|
||||||
self.assertBeatable(True)
|
self.assertBeatable(True)
|
||||||
|
|
||||||
def test_guns_zillions_first(self):
|
def test_guns_zillions_first(self) -> None:
|
||||||
""" with low gun levels, 5 Zillion is enough to get JJ to gun 3 """
|
""" with low gun levels, 5 Zillion is enough to get JJ to gun 3 """
|
||||||
|
self.ensure_gun_3_requirement()
|
||||||
self.collect_by_name(["Zillion", "Red ID Card", "Floppy Disk", "Opa-Opa"])
|
self.collect_by_name(["Zillion", "Red ID Card", "Floppy Disk", "Opa-Opa"])
|
||||||
self.assertBeatable(False) # not enough gun
|
self.assertBeatable(False) # not enough gun
|
||||||
self.collect_by_name("JJ")
|
self.collect_by_name("JJ")
|
||||||
|
@ -129,14 +134,14 @@ class TestGoalChampStart(ZillionTestBase):
|
||||||
"opas_per_level": 1
|
"opas_per_level": 1
|
||||||
}
|
}
|
||||||
|
|
||||||
def test_jump_jj_first(self):
|
def test_jump_jj_first(self) -> None:
|
||||||
""" with low jump levels, 5 level-ups is enough to get JJ to jump 3 """
|
""" with low jump levels, 5 level-ups is enough to get JJ to jump 3 """
|
||||||
self.collect_by_name(["JJ", "Red ID Card", "Floppy Disk", "Zillion"])
|
self.collect_by_name(["JJ", "Red ID Card", "Floppy Disk", "Zillion"])
|
||||||
self.assertBeatable(False) # not enough jump
|
self.assertBeatable(False) # not enough jump
|
||||||
self.collect_by_name("Opa-Opa")
|
self.collect_by_name("Opa-Opa")
|
||||||
self.assertBeatable(True)
|
self.assertBeatable(True)
|
||||||
|
|
||||||
def test_jump_opa_first(self):
|
def test_jump_opa_first(self) -> None:
|
||||||
""" with low jump levels, 5 level-ups is enough to get JJ to jump 3 """
|
""" with low jump levels, 5 level-ups is enough to get JJ to jump 3 """
|
||||||
self.collect_by_name(["Opa-Opa", "Red ID Card", "Floppy Disk", "Zillion"])
|
self.collect_by_name(["Opa-Opa", "Red ID Card", "Floppy Disk", "Zillion"])
|
||||||
self.assertBeatable(False) # not enough jump
|
self.assertBeatable(False) # not enough jump
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
|
from typing import cast
|
||||||
from test.worlds.test_base import WorldTestBase
|
from test.worlds.test_base import WorldTestBase
|
||||||
from worlds.zillion.region import ZillionLocation
|
from worlds.zillion import ZillionWorld
|
||||||
|
|
||||||
|
|
||||||
class ZillionTestBase(WorldTestBase):
|
class ZillionTestBase(WorldTestBase):
|
||||||
game = "Zillion"
|
game = "Zillion"
|
||||||
|
|
||||||
def world_setup(self) -> None:
|
def ensure_gun_3_requirement(self) -> None:
|
||||||
super().world_setup()
|
"""
|
||||||
# make sure game requires gun 3 for tests
|
There's a low probability that gun 3 is not required.
|
||||||
for location in self.world.get_locations():
|
|
||||||
if isinstance(location, ZillionLocation) and location.name.startswith("O-7"):
|
This makes sure that gun 3 is required by making all the canisters
|
||||||
location.zz_loc.req.gun = 3
|
in O-7 (including key word canisters) require gun 3.
|
||||||
|
"""
|
||||||
|
zz_world = cast(ZillionWorld, self.world.worlds[1])
|
||||||
|
assert zz_world.zz_system.randomizer
|
||||||
|
for zz_loc_name, zz_loc in zz_world.zz_system.randomizer.locations.items():
|
||||||
|
if zz_loc_name.startswith("r15c6"):
|
||||||
|
zz_loc.req.gun = 3
|
||||||
|
|
Loading…
Reference in New Issue