Source code for message_ix_models.tests.model.test_macro

import pandas as pd
import pandas.testing as pdt
import pytest
from sdmx.model import Annotation, Code

from message_ix_models.model.macro import generate, load
from message_ix_models.util import package_data_path


[docs]@pytest.mark.parametrize( "parameter, value", [ ("aeei", 1.0), ("config", None), ("depr", 1.0), ("drate", 1.0), ("lotol", 1.0), pytest.param("foo", 1.0, marks=pytest.mark.xfail(raises=NotImplementedError)), ], ) def test_generate0(test_context, parameter, value): result = generate(parameter, test_context, value=value) assert not result.isna().any(axis=None)
[docs]def test_generate1(test_context): commodities = [ Code(id="foo", annotations=[Annotation(id="macro-sector", text="BAR")]), Code(id="baz", annotations=[Annotation(id="macro-sector", text="QUX")]), ] result = generate("config", test_context, commodities) assert {"foo", "baz"} == set(result["commodity"].unique()) # Only the identified sectors appear assert {"BAR", "QUX"} == set(result["sector"].unique()) # Only 2 unique (commodity, sector) combinations appear assert 2 == len(result[["commodity", "sector"]].drop_duplicates())
[docs]def test_load(test_context): result = load(package_data_path("test", "macro")) assert {"kgdp"} == set(result.keys()) pdt.assert_index_equal(pd.Index(["node", "value", "unit"]), result["kgdp"].columns) assert not result["kgdp"].isna().any(axis=None)