|
1 | 1 | import platform |
2 | 2 | from distutils.dir_util import copy_tree |
3 | 3 | from pathlib import Path |
| 4 | +from unittest.mock import patch |
4 | 5 | import docker |
5 | 6 | import docker.errors |
6 | 7 | import numpy as np |
@@ -218,6 +219,7 @@ def test_model_update(self, initialized_model): |
218 | 219 | initialized_model.update() |
219 | 220 |
|
220 | 221 |
|
| 222 | +@pytest.mark.skipif(not docker_available(), reason="Docker not available") |
221 | 223 | class TestUpdatedModel: |
222 | 224 | # Many of these should be available after init |
223 | 225 | def test_get_current_time(self, updated_model): |
@@ -259,6 +261,32 @@ def test_get_value(self, updated_model): |
259 | 261 | updated_model.get_value("respiration", dest) |
260 | 262 | assert dest[0] != 0.0 |
261 | 263 |
|
| 264 | + def test_set_output_var(self, updated_model): |
| 265 | + src = np.zeros(1) |
| 266 | + with pytest.raises(ValueError, match="output variable"): |
| 267 | + updated_model.set_value("respiration", src) |
| 268 | + |
| 269 | + def test_get_wrong_value(self, updated_model): |
| 270 | + dest = np.zeros(1) |
| 271 | + with pytest.raises(ValueError, match="Unknown variable"): |
| 272 | + updated_model.get_value("nonsense_variable", dest) |
| 273 | + |
| 274 | + def test_dev_error_variables(self, updated_model): |
| 275 | + dest = np.zeros(1) |
| 276 | + with patch("PyStemmusScope.bmi.implementation.MODEL_VARNAMES", ("NONSENSE",)): |
| 277 | + with pytest.raises(ValueError, match="Contact devs"): |
| 278 | + updated_model.get_value("NONSENSE", dest) |
| 279 | + |
| 280 | + def test_set_value(self, updated_model): |
| 281 | + gridsize = updated_model.get_grid_size( |
| 282 | + updated_model.get_var_grid("soil_temperature") |
| 283 | + ) |
| 284 | + src = np.zeros(gridsize) + 10.0 |
| 285 | + dest = np.zeros(gridsize) |
| 286 | + updated_model.set_value("soil_temperature", src) |
| 287 | + updated_model.get_value("soil_temperature", dest) |
| 288 | + np.testing.assert_array_equal(src, dest) |
| 289 | + |
262 | 290 | def test_set_value_inds(self, updated_model): |
263 | 291 | dest = np.zeros(1) |
264 | 292 | updated_model.set_value_at_indices( |
|
0 commit comments