|
12 | 12 | import PyPartMC as ppmc |
13 | 13 |
|
14 | 14 | from .test_aero_data import AERO_DATA_CTOR_ARG_FULL, AERO_DATA_CTOR_ARG_MINIMAL |
15 | | -from .test_aero_dist import AERO_DIST_CTOR_ARG_FULL, AERO_DIST_CTOR_ARG_MINIMAL |
| 15 | +from .test_aero_dist import ( |
| 16 | + AERO_DIST_CTOR_ARG_AVERAGE, |
| 17 | + AERO_DIST_CTOR_ARG_FULL, |
| 18 | + AERO_DIST_CTOR_ARG_MINIMAL, |
| 19 | +) |
16 | 20 | from .test_env_state import ENV_STATE_CTOR_ARG_MINIMAL |
17 | 21 |
|
18 | 22 | AERO_STATE_CTOR_ARG_MINIMAL = 44, "nummass_source" |
@@ -42,6 +46,17 @@ def sut_full(): |
42 | 46 | return sut |
43 | 47 |
|
44 | 48 |
|
| 49 | +@pytest.fixture |
| 50 | +def sut_average(): |
| 51 | + aero_data = ppmc.AeroData(AERO_DATA_CTOR_ARG_FULL) |
| 52 | + aero_dist = ppmc.AeroDist(aero_data, AERO_DIST_CTOR_ARG_AVERAGE) |
| 53 | + sut = ppmc.AeroState(aero_data, *AERO_STATE_CTOR_ARG_MINIMAL) |
| 54 | + _ = sut.dist_sample(aero_dist, 1.0, 0.0, True, True) |
| 55 | + aero_data = None |
| 56 | + gc.collect() |
| 57 | + return sut |
| 58 | + |
| 59 | + |
45 | 60 | class TestAeroState: |
46 | 61 | @staticmethod |
47 | 62 | def test_ctor(): |
@@ -260,15 +275,25 @@ def test_mixing_state(sut_minimal): # pylint: disable=redefined-outer-name |
260 | 275 | assert len(mixing_state) == 3 |
261 | 276 |
|
262 | 277 | @staticmethod |
263 | | - def test_bin_average_comp(sut_minimal): # pylint: disable=redefined-outer-name |
| 278 | + @pytest.mark.parametrize("n_bin", (1, 123)) |
| 279 | + def test_bin_average_comp( |
| 280 | + sut_average, n_bin |
| 281 | + ): # pylint: disable=redefined-outer-name |
264 | 282 | # arrange |
265 | | - bin_grid = ppmc.BinGrid(123, "log", 1e-9, 1e-4) |
| 283 | + bin_grid = ppmc.BinGrid(n_bin, "log", 1e-9, 1e-4) |
266 | 284 |
|
267 | 285 | # act |
268 | | - sut_minimal.bin_average_comp(bin_grid) |
| 286 | + sut_average.bin_average_comp(bin_grid) |
| 287 | + so4_masses = np.array(sut_average.masses(include=["SO4"])) |
| 288 | + bc_masses = np.array(sut_average.masses(include=["BC"])) |
269 | 289 |
|
270 | 290 | # assert |
271 | | - # TODO #179 |
| 291 | + if n_bin == 1: |
| 292 | + assert np.all( |
| 293 | + np.isclose(so4_masses / bc_masses, so4_masses[0] / bc_masses[0]) |
| 294 | + ) |
| 295 | + else: |
| 296 | + assert np.logical_xor(so4_masses > 0, bc_masses > 0).all() |
272 | 297 |
|
273 | 298 | @staticmethod |
274 | 299 | def test_get_particle(sut_minimal): # pylint: disable=redefined-outer-name |
|
0 commit comments