|
18 | 18 |
|
19 | 19 | Tests for Forecast base class. |
20 | 20 | """ |
| 21 | + |
| 22 | +import numpy as np |
| 23 | +import numpy.testing as npt |
| 24 | + |
| 25 | +from climada.util.forecast import Forecast |
| 26 | + |
| 27 | + |
| 28 | +def test_forecast_init(): |
| 29 | + """Test initialization of Forecast class.""" |
| 30 | + forecast = Forecast() |
| 31 | + npt.assert_array_equal(forecast.lead_time, np.array([])) |
| 32 | + npt.assert_array_equal(forecast.member, np.array([])) |
| 33 | + |
| 34 | + forecast = Forecast(member=np.array([1, 2])) |
| 35 | + npt.assert_array_equal(forecast.member, np.array([1, 2]), strict=True) |
| 36 | + |
| 37 | + forecast = Forecast(lead_time=np.array([1, 2])) |
| 38 | + npt.assert_array_equal(forecast.lead_time, np.array([1, 2]), strict=True) |
| 39 | + |
| 40 | + forecast = Forecast(lead_time=np.array([1, 2]), member=[3, 4]) |
| 41 | + npt.assert_array_equal(forecast.lead_time, np.array([1, 2]), strict=True) |
| 42 | + npt.assert_array_equal(forecast.member, np.array([3, 4]), strict=True) |
| 43 | + assert isinstance(forecast.member, np.ndarray) |
| 44 | + |
| 45 | + # Test with datetime64 including seconds |
| 46 | + lead_times_seconds = np.array( |
| 47 | + ["2024-01-01T00:00:00", "2024-01-01T00:01:00", "2024-01-01"], |
| 48 | + dtype="datetime64[s]", |
| 49 | + ) |
| 50 | + forecast = Forecast(lead_time=lead_times_seconds, member=[1, 2, 3]) |
| 51 | + npt.assert_array_equal(forecast.lead_time, lead_times_seconds, strict=True) |
| 52 | + assert forecast.lead_time.dtype == np.dtype("datetime64[s]") |
0 commit comments