forked from noaa-oar-arl/monetio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_icap_mme.py
60 lines (44 loc) · 1.94 KB
/
test_icap_mme.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import pytest
from monetio.models.icap_mme import open_dataset, open_mfdataset
def test_open_dataset_bad_date():
with pytest.raises(ValueError, match="File does not exist"):
open_dataset("1990-08-01")
def test_open_dataset_invalid_param():
date = "2019-08-01"
with pytest.raises(ValueError, match="Invalid input for 'product'"):
open_dataset(date, product="asdf")
open_mfdataset([date], product="asdf")
with pytest.raises(ValueError, match="Invalid input for 'data_var'"):
open_dataset(date, data_var="asdf")
open_mfdataset([date], data_var="asdf")
@pytest.mark.parametrize(
"date,product,data_var",
[
("2019-08-01", "MME", "totaldustaod550"),
("2024-02-01", "C4", "dustaod550"),
],
)
def test_open_dataset(tmp_path, monkeypatch, date, product, data_var):
ds = open_dataset(date, product=product, data_var=data_var, download=False)
assert set(ds.dims) == {"time", "lat", "lon"}
monkeypatch.chdir(tmp_path)
ds_dl = open_dataset(date, product=product, data_var=data_var, download=True)
assert len(sorted(tmp_path.glob("*.nc"))) == 1
assert set(ds_dl.dims) == {"time", "lat", "lon"}
assert ds_dl.equals(ds)
def test_open_mfdataset(tmp_path, monkeypatch):
dates = ["2023-08-01", "2023-08-02"]
product = "C4"
data_var = "dustaod550"
ds = open_mfdataset(dates, product=product, data_var=data_var, download=False)
assert set(ds.dims) == {"time", "lat", "lon"}
assert ds["dust_aod_mean"].chunks is None, "not Dask-backed"
assert (
~ds.time.to_series().duplicated(keep=False)
).sum() == 8, "all overlap except first and last day"
monkeypatch.chdir(tmp_path)
ds_dl = open_mfdataset(dates, product=product, data_var=data_var, download=True)
assert len(sorted(tmp_path.glob("*.nc"))) == 2
assert set(ds_dl.dims) == {"time", "lat", "lon"}
assert ds_dl["dust_aod_mean"].chunks is not None
assert ds_dl.equals(ds)