Пример #1
0
def test_calculate_indices_no_item(mock_read_databases: MagicMock,
                                   echoes_pickup_database: PickupDatabase,
                                   empty_patches
                                   ):
    # Setup
    description = LayoutDescription(
        version=randovania.VERSION,
        permalink=Permalink.default(),
        patches=empty_patches,
        solver_path=()
    )
    mock_read_databases.return_value = (None, echoes_pickup_database)

    # Run
    result = claris_randomizer._calculate_indices(description)

    # Assert
    mock_read_databases.assert_called_once_with(description.permalink.layout_configuration.game_data)
    useless_pickup = echoes_pickup_database.pickup_by_name(claris_randomizer._USELESS_PICKUP_NAME)
    useless_index = echoes_pickup_database.original_index(useless_pickup)
    assert result == [useless_index.index] * echoes_pickup_database.total_pickup_count
Пример #2
0
def test_compare_generated_with_data(mock_permalink_as_str: PropertyMock,
                                     layout_description: LayoutDescription,
                                     echoes_pickup_database: PickupDatabase):
    debug._DEBUG_LEVEL = 0
    status_update = MagicMock()
    mock_permalink_as_str.return_value = "fixed-seed!"

    generated_description = generator.generate_list(
        layout_description.permalink, status_update=status_update, timeout=None)

    indices: List[int] = [None] * echoes_pickup_database.total_pickup_count
    for index, pickup in generated_description.patches.pickup_assignment.items():
        indices[index.index] = echoes_pickup_database.original_index(pickup).index
    print(indices)

    assert generated_description.without_solver_path == layout_description
Пример #3
0
def read_pickup_database(
        data: Dict, resource_database: ResourceDatabase) -> PickupDatabase:
    pickups = {
        name: PickupEntry(
            name,
            read_resource_gain_tuple(item["resources"], resource_database),
            item["item_category"],
            item["probability_offset"],
        )
        for name, item in data["pickups"].items()
    }
    original_pickup_mapping = {
        PickupIndex(i): pickups[name]
        for i, name in enumerate(data["original_indices"])
    }
    useless_pickup = pickups[data["useless_pickup"]]

    return PickupDatabase(pickups=pickups,
                          original_pickup_mapping=original_pickup_mapping,
                          useless_pickup=useless_pickup)
Пример #4
0
def test_calculate_indices_original(mock_read_databases: MagicMock,
                                    echoes_pickup_database: PickupDatabase,
                                    empty_patches
                                    ):
    # Setup
    description = LayoutDescription(
        version=randovania.VERSION,
        permalink=Permalink.default(),
        patches=empty_patches.assign_new_pickups(echoes_pickup_database.original_pickup_mapping.items()),
        solver_path=()
    )
    mock_read_databases.return_value = (None, echoes_pickup_database)

    # Run
    result = claris_randomizer._calculate_indices(description)

    # Assert
    mock_read_databases.assert_called_once_with(description.permalink.layout_configuration.game_data)
    assert result == [
        echoes_pickup_database.original_index(pickup).index
        for pickup in echoes_pickup_database.original_pickup_mapping.values()
    ]
Пример #5
0
def test_create_pickup_list(empty_patches):
    # Setup
    useless_resource = SimpleResourceInfo(0, "Useless", "Useless",
                                          ResourceType.ITEM)
    resource_a = SimpleResourceInfo(1, "A", "A", ResourceType.ITEM)
    resource_b = SimpleResourceInfo(2, "B", "B", ResourceType.ITEM)
    pickup_a = PickupEntry("A", ((resource_a, 1), ), "", 0)

    useless_pickup = PickupEntry("Useless", ((useless_resource, 1), ), "", 0)
    pickup_database = PickupDatabase(pickups={},
                                     original_pickup_mapping={
                                         PickupIndex(i): useless_pickup
                                         for i in range(4)
                                     },
                                     useless_pickup=useless_pickup)
    patches = empty_patches.assign_pickup_assignment({
        PickupIndex(0):
        pickup_a,
        PickupIndex(2):
        PickupEntry("B", ((resource_b, 1), (resource_a, 1)), "", 0),
        PickupIndex(3):
        pickup_a,
    })

    # Run
    result = patcher_file._create_pickup_list(patches, pickup_database)

    # Assert
    assert result == [
        {
            "pickup_index": 0,
            "scan": "A",
            "resources": [{
                "index": 1,
                "amount": 1
            }]
        },
        {
            "pickup_index": 1,
            "scan": "Useless",
            "resources": [{
                "index": 0,
                "amount": 1
            }]
        },
        {
            "pickup_index": 2,
            "scan": "B",
            "resources": [{
                "index": 2,
                "amount": 1
            }, {
                "index": 1,
                "amount": 1
            }]
        },
        {
            "pickup_index": 3,
            "scan": "A",
            "resources": [{
                "index": 1,
                "amount": 1
            }]
        },
    ]