Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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 == {}
Пример #4
0
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))
Пример #5
0
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))