Source code for message_ix_models.tests.model.material.test_data_petro

from typing import TYPE_CHECKING

import pytest

from message_ix_models.model.material.data_petro import gen_data_petro_chemicals
from message_ix_models.testing import bare_res

if TYPE_CHECKING:
    from message_ix import Scenario
    from pytest import FixtureRequest

    from message_ix_models import Context


[docs] @pytest.fixture def scenario(request: "FixtureRequest", test_context: "Context") -> "Scenario": """Same fixture as in :mod:`.test_tools`.""" test_context.model.regions = "R12" scen = bare_res(request, test_context, solved=False) # add R12_GLB region required for steel trade model with scen.transact(): scen.add_set("node", "R12_GLB") return scen
#: Expected parameters and number of values. EXP_LEN = { "input": 84784, "output": 108976, "emission_factor": 29568, "inv_cost": 2904, "fix_cost": 12096, "var_cost": 12208, "capacity_factor": 13440, "technical_lifetime": 2904, "growth_activity_lo": 336, "growth_activity_up": 333, "share_mode_lo": 2, "demand": 168, "historical_new_capacity": 736, "historical_activity": 796, "initial_activity_up": 169, "bound_activity_lo": 24, "bound_activity_up": 38, "relation_activity": 1176, }
[docs] @pytest.mark.usefixtures("ssp_user_data") def test_gen_data_petro_chemicals(scenario: "Scenario") -> None: result = gen_data_petro_chemicals(scenario, dry_run=False) # Data is generated for expected parameters assert set(EXP_LEN) == set(result) for name, df in result.items(): # Data have the expected length assert EXP_LEN[name] == len(df), f"Wrong length for {name!r}" # Valid parameter data: no NaNs anywhere assert not df.isna().any(axis=None), f"NaN entries for {name!r}"
# TODO Extend assertions