def test_set_input_vars(self, model):
ds = xr.Dataset()
with pytest.raises(KeyError) as excinfo:
ds.xsimlab._set_input_vars(model, 'invalid_process', var=1)
assert "no process named" in str(excinfo.value)
with pytest.raises(ValueError) as excinfo:
ds.xsimlab._set_input_vars(model, 'some_process', some_param=0,
invalid_var=1)
assert "not valid input variables" in str(excinfo.value)
ds.xsimlab._set_input_vars(model, 'quantity',
quantity=('x', np.zeros(10)))
expected = xr.DataArray(data=np.zeros(10), dims='x')
assert "quantity__quantity" in ds
xr.testing.assert_equal(ds['quantity__quantity'], expected)
# test time and parameter dimensions
ds.xsimlab._set_input_vars(model, model.some_process, some_param=[1, 2])
expected = xr.DataArray(data=[1, 2], dims='some_process__some_param',
coords={'some_process__some_param': [1, 2]})
xr.testing.assert_equal(ds['some_process__some_param'], expected)
del ds['some_process__some_param']
ds['clock'] = ('clock', [0, 1], {self._master_clock_key: 1})
ds.xsimlab._set_input_vars(model, 'some_process',
some_param=('clock', [1, 2]))
expected = xr.DataArray(data=[1, 2], dims='clock',
coords={'clock': [0, 1]})
xr.testing.assert_equal(ds['some_process__some_param'], expected)
# test optional
ds.xsimlab._set_input_vars(model, 'grid')
expected = xr.DataArray(data=5)
xr.testing.assert_equal(ds['grid__x_size'], expected)
评论列表
文章目录