"""Tests for Sheet 6: Commodity shock channel (Part VI).""" import pytest from fqbm.state import FQBMState from fqbm.sheets.commodity import ( inflation_composite, commodity_step, CommodityParams, ) def test_inflation_composite(): pi = inflation_composite(0.02, 0.1, 0.05, 0.1, 0.2) assert pi == pytest.approx(0.02 + 0.1 * 0.1 + 0.2 * 0.05) assert pi > 0.02 def test_commodity_step(): state = FQBMState(O=1.0) params = CommodityParams(d_O=0.1) out = commodity_step(state, params) assert out.O == pytest.approx(1.1) params2 = CommodityParams(d_O=-0.05) out2 = commodity_step(out, params2) assert out2.O == pytest.approx(1.1 * 0.95) def test_commodity_step_zero_o(): state = FQBMState(O=0.0) params = CommodityParams(d_O=0.1) out = commodity_step(state, params) assert out.O == pytest.approx(1.1)