Skip to content

Commit da31059

Browse files
committed
Added unit test for cliff impacts calculation
1 parent 22e234c commit da31059

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

tests/fixtures/simulation.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,15 @@ def mock_dataset():
6161
mock_instance.file_path = SAMPLE_DATASET_FILENAME
6262
mock_dataset_class.from_file.return_value = mock_instance
6363
yield mock_instance
64+
65+
66+
@pytest.fixture
67+
def mock_simulation_with_cliff_vars():
68+
69+
mock_sim = Mock()
70+
mock_sim.calculate.side_effect = lambda var: {
71+
"cliff_gap": Mock(sum=Mock(return_value=100.0)),
72+
"is_on_cliff": Mock(sum=Mock(return_value=40.0)),
73+
"is_adult": Mock(sum=Mock(return_value=80.0)),
74+
}[var]
75+
return mock_sim

tests/test_simulation.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
mock_get_default_dataset,
66
mock_dataset,
77
SAMPLE_DATASET_FILENAME,
8+
mock_simulation_with_cliff_vars,
89
)
910
import sys
1011
from copy import deepcopy
1112

1213
from policyengine import Simulation
14+
from policyengine.outputs.macro.single.calculate_single_economy import GeneralEconomyTask
1315

1416

1517
class TestSimulation:
@@ -70,3 +72,15 @@ def test__given_dataset_without_time_period__does_not_set_time_period(
7072
sim._set_data_time_period(uk_sim_options_pe_dataset.data)
7173
== None
7274
)
75+
76+
77+
class TestCalculateCliffs:
78+
def test__calculates_correct_cliff_metrics(self, mock_simulation_with_cliff_vars):
79+
80+
task = object.__new__(GeneralEconomyTask)
81+
task.simulation = mock_simulation_with_cliff_vars
82+
83+
cliff_result = task.calculate_cliffs()
84+
85+
assert cliff_result.cliff_gap == 100.0
86+
assert cliff_result.cliff_share == 0.5

0 commit comments

Comments
 (0)