77import numpy as np
88import pytest
99from shapely .geometry import GeometryCollection , Polygon
10+ import dirty_equals
1011
1112from openeo .metadata import CollectionMetadata
1213from openeo_driver .datacube import DriverVectorCube
@@ -181,8 +182,6 @@ def test_aggregate_polygon_result_inconsistent_bands():
181182
182183
183184def test_aggregate_polygon_result_CSV (tmp_path ):
184-
185-
186185 metadata = CollectionMetadata ({
187186 "cube:dimensions" : {
188187 "x" : {"type" : "spatial" },
@@ -196,28 +195,66 @@ def test_aggregate_polygon_result_CSV(tmp_path):
196195 Polygon ([(6 , 1 ), (1 , 7 ), (9 , 9 )])
197196 ])
198197
199-
200198 result = AggregatePolygonResultCSV (csv_dir = Path (__file__ ).parent / "data" / "aggregate_spatial_spacetime_cube" , regions = regions_with_nonexistant , metadata = metadata )
201199 result .set_format ("json" )
202200
203201 assets = result .write_assets (tmp_path / "ignored" )
204- theAsset = assets .popitem ()[1 ]
205- filename = theAsset ['href' ]
202+ [(_ , asset_metadata )] = assets .items ()
206203
207- assert 'application/json' == theAsset ['type' ]
208- assert ["red" , "green" , "blue" ] == [b ['name' ] for b in theAsset ['bands' ]]
209- assert 'raster:bands' in theAsset
210- assert 'file:size' in theAsset
204+ assert "application/json" == asset_metadata ["type" ]
205+ assert asset_metadata ["bands" ] == [
206+ dirty_equals .IsPartialDict (name = "red" ),
207+ dirty_equals .IsPartialDict (name = "green" ),
208+ dirty_equals .IsPartialDict (name = "blue" ),
209+ ]
210+ assert asset_metadata ["raster:bands" ] == [
211+ {
212+ "statistics" : {
213+ "minimum" : pytest .approx (4646 , rel = 0.1 ),
214+ "mean" : pytest .approx (4646 , rel = 0.1 ),
215+ "maximum" : pytest .approx (4646 , rel = 0.1 ),
216+ "stddev" : pytest .approx (0.31 , rel = 0.1 ),
217+ "valid_percent" : 100.0 ,
218+ }
219+ },
220+ {
221+ "statistics" : {
222+ "minimum" : pytest .approx (4865 , rel = 0.1 ),
223+ "mean" : pytest .approx (4865 , rel = 0.1 ),
224+ "maximum" : pytest .approx (4865 , rel = 0.1 ),
225+ "stddev" : pytest .approx (0.265 , rel = 0.1 ),
226+ "valid_percent" : 100.0 ,
227+ }
228+ },
229+ {
230+ "statistics" : {
231+ "minimum" : pytest .approx (5178 , rel = 0.1 ),
232+ "mean" : pytest .approx (5178 , rel = 0.1 ),
233+ "maximum" : pytest .approx (5178 , rel = 0.1 ),
234+ "stddev" : pytest .approx (0.41 , rel = 0.1 ),
235+ "valid_percent" : 100.0 ,
236+ }
237+ },
238+ ]
211239
212- assert 'mean' in theAsset ['raster:bands' ][0 ]["statistics" ]
213- assert 'minimum' in theAsset ['raster:bands' ][0 ]["statistics" ]
214- assert 100.0 == theAsset ['raster:bands' ][0 ]["statistics" ]['valid_percent' ]
240+ assert "file:size" in asset_metadata
215241
216- expected = {'2017-09-05T00:00:00Z' : [[4646.262612301313 , 4865.926572218383 , 5178.517363510712 ], [None , None , None ], [4645.719597475695 , 4865.467252259935 , 5177.803342998465 ]], '2017-09-06T00:00:00Z' : [[None , None , None ], [None , None , None ], [4645.719597475695 , 4865.467252259935 , 5177.803342998465 ]]}
242+ filename = asset_metadata ["href" ]
243+ expected = {
244+ "2017-09-05T00:00:00Z" : [
245+ [4646.262612301313 , 4865.926572218383 , 5178.517363510712 ],
246+ [None , None , None ],
247+ [4645.719597475695 , 4865.467252259935 , 5177.803342998465 ],
248+ ],
249+ "2017-09-06T00:00:00Z" : [
250+ [None , None , None ],
251+ [None , None , None ],
252+ [4645.719597475695 , 4865.467252259935 , 5177.803342998465 ],
253+ ],
254+ }
217255 with open (filename ) as f :
218-
219256 timeseries_ds = json .load (f )
220- assert expected == timeseries_ds
257+ assert timeseries_ds == expected
221258
222259class TestAggregatePolygonSpatialResult :
223260
0 commit comments