1414
1515from tests .helpers import make_s3_olci_efr , make_s3_slstr_lst , make_s3_slstr_rbt
1616from xarray_eopf .amode import AnalysisModeRegistry
17- from xarray_eopf .amodes .sentinel3 import Sen3Ol1Efr , Sen3Sl1Rbt , Sen3Sl2Lst , register
17+ from xarray_eopf .amodes .sentinel3 import (
18+ Sen3Ol1Efr ,
19+ Sen3Sl1Rbt ,
20+ Sen3Sl2Lst ,
21+ register ,
22+ )
1823from xarray_eopf .constants import FloatInt
1924
2025
@@ -91,7 +96,7 @@ def assert_convert_datatree_ok(
9196 self ,
9297 original_dt : xr .DataTree ,
9398 expected_var_names : list [str ],
94- expected_size : ( int , int ) ,
99+ expected_size : tuple [ int , int ] ,
95100 resolution : FloatInt | tuple [FloatInt , FloatInt ] | None = None ,
96101 bbox : Sequence [float | int ] | None = None ,
97102 ):
@@ -118,6 +123,12 @@ def assert_convert_datatree_fail(self, original_dt: xr.DataTree):
118123 with pytest .raises (ValueError , match = "No variables selected" ):
119124 self .mode .convert_datatree (original_dt , includes = "bibo" )
120125
126+ def assert_convert_datatree_fail_with_include_exclude (
127+ self , original_dt : xr .DataTree
128+ ):
129+ with pytest .raises (ValueError , match = "No variables selected" ):
130+ self .mode .convert_datatree (original_dt , includes = ".+" , excludes = ".+" )
131+
121132
122133class OlciEfrTest (Sen3TestMixin , TestCase ):
123134 mode = Sen3Ol1Efr ()
@@ -163,7 +174,7 @@ def test_convert_datatree_bbox(self):
163174 "oa02_radiance" ,
164175 "oa03_radiance" ,
165176 ],
166- expected_size = (372 , 421 ),
177+ expected_size = (372 , 454 ),
167178 bbox = [1 , 55 , 3 , 56 ],
168179 )
169180
@@ -187,6 +198,21 @@ def test_convert_datatree_raise_warning(self):
187198 def test_convert_datatree_fail (self ):
188199 self .assert_convert_datatree_fail (make_s3_olci_efr (size = 48 ))
189200
201+ def test_convert_datatree_fail_include_exclude_overlap (self ):
202+ self .assert_convert_datatree_fail_with_include_exclude (
203+ make_s3_olci_efr (size = 48 )
204+ )
205+
206+ def test_convert_datatree_sets_other_metadata_as_attrs (self ):
207+ dt = make_s3_olci_efr (size = 100 )
208+ dt .attrs ["other_metadata" ] = {"test_key" : "test_val" }
209+ ds = self .mode .convert_datatree (
210+ dt ,
211+ includes = ["oa01_radiance" ],
212+ resolution = 0.1 ,
213+ )
214+ self .assertEqual ({"test_key" : "test_val" }, ds .attrs )
215+
190216
191217class SlstrRbtTest (Sen3TestMixin , TestCase ):
192218 mode = Sen3Sl1Rbt ()
@@ -260,6 +286,11 @@ def test_convert_datatree_raise_warning(self):
260286 def test_convert_datatree_fail (self ):
261287 self .assert_convert_datatree_fail (make_s3_slstr_rbt (size = 48 ))
262288
289+ def test_convert_datatree_fail_include_exclude_overlap (self ):
290+ self .assert_convert_datatree_fail_with_include_exclude (
291+ make_s3_slstr_rbt (size = 48 )
292+ )
293+
263294 def test_get_outer_bbox (self ):
264295 bboxs = np .array ([[- 2 , 10 , 8 , 20 ], [2 , 12 , 13 , 25 ]])
265296 expected = [- 2 , 10 , 13 , 25 ]
@@ -307,9 +338,14 @@ def test_convert_datatree_bbox(self):
307338 self .assert_convert_datatree_ok (
308339 make_s3_slstr_lst (size = 1000 ),
309340 expected_var_names = ["lst" ],
310- expected_size = (112 , 127 ),
341+ expected_size = (112 , 148 ),
311342 bbox = [1 , 55 , 3 , 56 ],
312343 )
313344
314345 def test_convert_datatree_fail (self ):
315346 self .assert_convert_datatree_fail (make_s3_slstr_lst (size = 48 ))
347+
348+ def test_convert_datatree_fail_include_exclude_overlap (self ):
349+ self .assert_convert_datatree_fail_with_include_exclude (
350+ make_s3_slstr_lst (size = 48 )
351+ )
0 commit comments