def test_sky_temple_key_distribution_logic_vanilla_missing_pickup(dataclass_test_lib, empty_patches): # Setup permalink = dataclass_test_lib.mock_dataclass(Permalink) permalink.layout_configuration.sky_temple_keys = LayoutSkyTempleKeyMode.VANILLA available_pickups = [] # Run with pytest.raises(GenerationFailure) as exp: generator._sky_temple_key_distribution_logic(permalink, empty_patches, available_pickups) assert exp.value == GenerationFailure( "Missing Sky Temple Keys in available_pickups to place in all requested boss places", permalink)
def test_sky_temple_key_distribution_logic_vanilla_used_location(dataclass_test_lib, sky_temple_keys, empty_patches): # Setup permalink = dataclass_test_lib.mock_dataclass(Permalink) permalink.layout_configuration.sky_temple_keys = LayoutSkyTempleKeyMode.VANILLA initial_pickup_assignment = { generator._FLYING_ING_CACHES[0]: PickupEntry("Other Item", tuple(), "other", 0) } patches = empty_patches.assign_new_pickups(initial_pickup_assignment.items()) # Run with pytest.raises(GenerationFailure) as exp: generator._sky_temple_key_distribution_logic(permalink, patches, [sky_temple_keys[0]]) assert exp.value == GenerationFailure( "Attempted to place '{}' in PickupIndex 45, but there's already 'Pickup Other Item' there".format( sky_temple_keys[0] ), permalink)
def test_sky_temple_key_distribution_logic_fully_random_valid(dataclass_test_lib, sky_temple_keys, empty_patches): # Setup permalink = dataclass_test_lib.mock_dataclass(Permalink) permalink.layout_configuration.sky_temple_keys = LayoutSkyTempleKeyMode.FULLY_RANDOM patches = empty_patches available_pickups = sky_temple_keys[:] # Run result = generator._sky_temple_key_distribution_logic(permalink, patches, available_pickups) # Assert assert available_pickups == sky_temple_keys assert result.pickup_assignment == {}
def test_sky_temple_key_distribution_logic_all_guardians_valid(dataclass_test_lib, sky_temple_keys, empty_patches): # Setup permalink = dataclass_test_lib.mock_dataclass(Permalink) permalink.layout_configuration.sky_temple_keys = LayoutSkyTempleKeyMode.ALL_GUARDIANS patches = empty_patches available_pickups = sky_temple_keys[:] # Run result = generator._sky_temple_key_distribution_logic(permalink, patches, available_pickups) # Assert assert available_pickups == sky_temple_keys[3:] assert result.pickup_assignment == dict(zip(generator._GUARDIAN_INDICES, sky_temple_keys))
def test_sky_temple_key_distribution_logic_vanilla_valid(dataclass_test_lib, sky_temple_keys, empty_patches): # Setup permalink = dataclass_test_lib.mock_dataclass(Permalink) permalink.layout_configuration.sky_temple_keys = LayoutSkyTempleKeyMode.VANILLA available_pickups = sky_temple_keys[:] # Run result = generator._sky_temple_key_distribution_logic(permalink, empty_patches, available_pickups) # Assert assert available_pickups == [] assert result.pickup_assignment == dict(zip(generator._FLYING_ING_CACHES, sky_temple_keys))