|
| 1 | +import numpy as np |
| 2 | + |
| 3 | +from xrlint.plugins.xcube.rules.data_var_colors import DataVarColors |
| 4 | + |
| 5 | +import xarray as xr |
| 6 | + |
| 7 | +from xrlint.testing import RuleTester, RuleTest |
| 8 | + |
| 9 | + |
| 10 | +def make_dataset(): |
| 11 | + dims = ["time", "y", "x"] |
| 12 | + n = 5 |
| 13 | + return xr.Dataset( |
| 14 | + attrs=dict(title="v-data"), |
| 15 | + coords={ |
| 16 | + dims[2]: xr.DataArray( |
| 17 | + np.linspace(0, 1, n), dims=dims[2], attrs={"units": "m"} |
| 18 | + ), |
| 19 | + dims[1]: xr.DataArray( |
| 20 | + np.linspace(0, 1, n), dims=dims[1], attrs={"units": "m"} |
| 21 | + ), |
| 22 | + dims[0]: xr.DataArray( |
| 23 | + [2010, 2011, 2012, 2013, 2014], |
| 24 | + dims=dims[0], |
| 25 | + attrs={"units": "years"}, |
| 26 | + ), |
| 27 | + }, |
| 28 | + data_vars={ |
| 29 | + "chl": xr.DataArray( |
| 30 | + np.random.random((n, n, n)), |
| 31 | + dims=dims, |
| 32 | + attrs={ |
| 33 | + "units": "mg/m^-3", |
| 34 | + "color_bar_name": "plasma", |
| 35 | + "color_value_min": 0, |
| 36 | + "color_value_max": 100, |
| 37 | + "color_norm": "log", |
| 38 | + }, |
| 39 | + ), |
| 40 | + }, |
| 41 | + ) |
| 42 | + |
| 43 | + |
| 44 | +valid_dataset_1 = make_dataset() |
| 45 | + |
| 46 | +invalid_dataset_1 = make_dataset() |
| 47 | +invalid_dataset_1.chl.attrs = { |
| 48 | + "units": "mg/m^-3", |
| 49 | + # Missing: |
| 50 | + # "color_bar_name": "plasma", |
| 51 | + # "color_value_min": 0, |
| 52 | + # "color_value_max": 100, |
| 53 | + # "color_norm": "log", |
| 54 | +} |
| 55 | +invalid_dataset_2 = make_dataset() |
| 56 | +invalid_dataset_2.chl.attrs = { |
| 57 | + "units": "mg/m^-3", |
| 58 | + "color_bar_name": "plasma", |
| 59 | + # Missing: |
| 60 | + # "color_value_min": 0, |
| 61 | + # "color_value_max": 100, |
| 62 | + # "color_norm": "log", |
| 63 | +} |
| 64 | +invalid_dataset_3 = make_dataset() |
| 65 | +invalid_dataset_3.chl.attrs = { |
| 66 | + "units": "mg/m^-3", |
| 67 | + "color_bar_name": "plasma", |
| 68 | + "color_value_min": 0, |
| 69 | + "color_value_max": 100, |
| 70 | + "color_norm": "ln", # wrong |
| 71 | +} |
| 72 | + |
| 73 | +LatLonNamingTest = RuleTester.define_test( |
| 74 | + "data-var-colors", |
| 75 | + DataVarColors, |
| 76 | + valid=[ |
| 77 | + RuleTest(dataset=valid_dataset_1), |
| 78 | + ], |
| 79 | + invalid=[ |
| 80 | + RuleTest(dataset=invalid_dataset_1), |
| 81 | + RuleTest(dataset=invalid_dataset_2), |
| 82 | + RuleTest(dataset=invalid_dataset_3), |
| 83 | + ], |
| 84 | +) |
0 commit comments