From e83f2ccb12a191b7ed5846434a5b8f41dc047df4 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Fri, 15 Dec 2023 00:06:17 +0100 Subject: [PATCH] Add filter_bands and filter_temporal --- tests/README.md | 4 +- tests/assets/xyt-more-timestamps.json5 | 58 +++++++ tests/filter_bands.json5 | 154 ++++++++++++++++++- tests/filter_temporal.json5 | 201 ++++++++++++++++++++++++- 4 files changed, 413 insertions(+), 4 deletions(-) create mode 100644 tests/assets/xyt-more-timestamps.json5 diff --git a/tests/README.md b/tests/README.md index e1314982..093b75a7 100644 --- a/tests/README.md +++ b/tests/README.md @@ -63,11 +63,11 @@ This folder contains test cases for the openEO processes. - [x] eq - [x] exp - [x] extrema -- [ ] filter_bands +- [x] filter_bands* - [ ] filter_bbox - [ ] filter_labels (experimental) - [ ] filter_spatial -- [ ] filter_temporal +- [x] filter_temporal* - [ ] filter_vector (experimental) - [x] first - [ ] flatten_dimensions (experimental) diff --git a/tests/assets/xyt-more-timestamps.json5 b/tests/assets/xyt-more-timestamps.json5 new file mode 100644 index 00000000..cda0cddf --- /dev/null +++ b/tests/assets/xyt-more-timestamps.json5 @@ -0,0 +1,58 @@ +{ + "type": "datacube", + "nodata": NaN, + "dimensions": [ + { + "name": "t", + "type": "temporal", + "values": [ + "2020-06-01T00:00:00Z", + "2020-06-03T00:00:00Z", + "2020-06-05T00:00:00Z", + "2020-06-07T00:00:00Z", + "2020-06-09T00:00:00Z" + ] + }, + { + "name": "y", + "type": "spatial", + "axis": "y", + "values": [5757495.0, 5757485.0, 5757475.0], + "reference_system": "EPSG:25832" + }, + { + "name": "x", + "type": "spatial", + "axis": "x", + "values": [404835.0, 404845.0, 404855.0, 404865.0], + "reference_system": "EPSG:25832" + } + ], + "data": [ + [ + [17.5, 53.75, -27.1, -64.25], + [-18.0, 8.45, -3.11, -20.5], + [50.4, 49.24, 25.16, -81.6] + ], + [ + [-63.65, 9.0, -68.52, -8.0], + [1.05, -63.8, 73.05, 51.05], + [47.86, -21.30, NaN, 46.15] + ], + [ + [-13.40, 36.07, 43.88, 74.72], + [79.92, 74.10, 98.28, -23.62], + [-70.40, -30.03, 1.26, 5.28] + ], + [ + [71.79, NaN, 97.01, -76.48], + [-21.55, NaN, -60.00, 56.84], + [-11.94, -54.23, NaN, 73.26] + ], + [ + [-12.23, 61.46, 2.38, -84.76], + [ 28.36, 48.45, -65.85, 65.90], + [ 29.50, -45.82, 78.05, 58.27] + ] + ] +} diff --git a/tests/filter_bands.json5 b/tests/filter_bands.json5 index c9e42b84..61bd447f 100644 --- a/tests/filter_bands.json5 +++ b/tests/filter_bands.json5 @@ -1,5 +1,157 @@ { "id": "filter_bands", "level": "L2A", - "tests": [] + "tests": [ + { + "arguments": { + "data": { + "$ref": "assets/xyb-minimal-int.json5" + } + }, + "throws": "BandFilterParameterMissing", + }, + { + "arguments": { + "data": { + "$ref": "assets/xyt-minimal-float.json5" + }, + "bands": [ + "test" + ] + }, + "throws": "DimensionMissing", + }, + { + "arguments": { + "data": { + "$ref": "assets/xyb-minimal-int.json5" + }, + "bands": [ + "foo" + ] + }, + "returns": { + "type": "datacube", + "nodata": 0, + "dimensions": [ + { + "name": "bands", + "type": "bands", + "values": [] + }, + { + "name": "y", + "type": "spatial", + "axis": "y", + "values": [5757495.0, 5757485.0, 5757475.0], + "reference_system": "EPSG:25832" + }, + { + "name": "x", + "type": "spatial", + "axis": "x", + "values": [404835.0, 404845.0, 404855.0, 404865.0], + "reference_system": "EPSG:25832" + } + ], + "data": [] + } + }, + { + "arguments": { + "data": { + "$ref": "assets/xyb-minimal-int.json5" + }, + "bands": [ + "red", + "blue" + ] + }, + "returns": { + "type": "datacube", + "nodata": 0, + "dimensions": [ + { + "name": "bands", + "type": "bands", + "values": ["red", "blue"] + }, + { + "name": "y", + "type": "spatial", + "axis": "y", + "values": [5757495.0, 5757485.0, 5757475.0], + "reference_system": "EPSG:25832" + }, + { + "name": "x", + "type": "spatial", + "axis": "x", + "values": [404835.0, 404845.0, 404855.0, 404865.0], + "reference_system": "EPSG:25832" + } + ], + "data": [ + [ + [172, 47, 117, 192], + [67, 251, 195, 103], + [9, 211, 0, 242] + ], + [ + [174, 88, 81, 165], + [25, 77, 72, 9], + [148, 115, 0, 208] + ] + ] + } + }, + { + "arguments": { + "data": { + "$ref": "assets/xyb-minimal-int.json5" + }, + "bands": [ + "red", + "blue" + ] + }, + "returns": { + "type": "datacube", + "nodata": 0, + "dimensions": [ + { + "name": "bands", + "type": "bands", + "values": ["blue", "green"] + }, + { + "name": "y", + "type": "spatial", + "axis": "y", + "values": [5757495.0, 5757485.0, 5757475.0], + "reference_system": "EPSG:25832" + }, + { + "name": "x", + "type": "spatial", + "axis": "x", + "values": [404835.0, 404845.0, 404855.0, 404865.0], + "reference_system": "EPSG:25832" + } + ], + "data": [ + [ + [174, 88, 81, 165], + [25, 77, 72, 9], + [148, 115, 0, 208] + ], + [ + [36, 87, 70, 216], + [88, 140, 58, 193], + [230, 39, 0, 87] + ] + ] + } + } + ] } diff --git a/tests/filter_temporal.json5 b/tests/filter_temporal.json5 index fcf0c8a7..545c6cfd 100644 --- a/tests/filter_temporal.json5 +++ b/tests/filter_temporal.json5 @@ -1,5 +1,204 @@ { "id": "filter_temporal", "level": "L2", - "tests": [] + "tests": [ + { + "arguments": { + "data": { + "$ref": "assets/xyt-more-timestamps.json5" + }, + "extent": [ + "2016-01-01", + "2015-01-01", + ] + }, + "throws": "TemporalExtentEmpty" + }, + { + "arguments": { + "data": { + "$ref": "assets/xyt-more-timestamps.json5" + }, + "extent": [ + "2015-01-01", + "2016-01-01" + ], + "dimension": "time" + }, + "throws": "DimensionNotAvailable", + }, + { + "arguments": { + "data": { + "$ref": "assets/xyb-minimal-int.json5" + }, + "extent": [ + "2015-01-01", + "2016-01-01" + ] + }, + "throws": "DimensionNotAvailable", + }, + { + "arguments": { + "data": { + "$ref": "assets/xyt-more-timestamps.json5" + }, + "extent": [ + "2020-06-01T00:00:00Z", + "2020-06-05T00:00:00Z", + ] + }, + "returns": { + "type": "datacube", + "nodata": NaN, + "dimensions": [ + { + "name": "t", + "type": "temporal", + "values": [ + "2020-06-01T00:00:00Z", + "2020-06-03T00:00:00Z" + ] + }, + { + "name": "y", + "type": "spatial", + "axis": "y", + "values": [5757495.0, 5757485.0, 5757475.0], + "reference_system": "EPSG:25832" + }, + { + "name": "x", + "type": "spatial", + "axis": "x", + "values": [404835.0, 404845.0, 404855.0, 404865.0], + "reference_system": "EPSG:25832" + } + ], + "data": [ + [ + [17.5, 53.75, -27.1, -64.25], + [-18.0, 8.45, -3.11, -20.5], + [50.4, 49.24, 25.16, -81.6] + ], + [ + [-63.65, 9.0, -68.52, -8.0], + [1.05, -63.8, 73.05, 51.05], + [47.86, -21.30, NaN, 46.15] + ] + ] + } + }, + { + "arguments": { + "data": { + "$ref": "assets/xyt-more-timestamps.json5" + }, + "extent": [ + "2020-06-08", + null + ] + }, + "returns": { + "type": "datacube", + "nodata": NaN, + "dimensions": [ + { + "name": "t", + "type": "temporal", + "values": [ + "2020-06-09T00:00:00Z" + ] + }, + { + "name": "y", + "type": "spatial", + "axis": "y", + "values": [5757495.0, 5757485.0, 5757475.0], + "reference_system": "EPSG:25832" + }, + { + "name": "x", + "type": "spatial", + "axis": "x", + "values": [404835.0, 404845.0, 404855.0, 404865.0], + "reference_system": "EPSG:25832" + } + ], + "data": [ + [ + [-12.23, 61.46, 2.38, -84.76], + [ 28.36, 48.45, -65.85, 65.90], + [ 29.50, -45.82, 78.05, 58.27] + ] + ] + } + }, + { + "arguments": { + "data": { + "$ref": "assets/xyt-more-timestamps.json5" + }, + "extent": [ + "2021-01-01", + null + ] + }, + "returns": { + "type": "datacube", + "nodata": NaN, + "dimensions": [ + { + "name": "t", + "type": "temporal", + "values": [] + }, + { + "name": "y", + "type": "spatial", + "axis": "y", + "values": [5757495.0, 5757485.0, 5757475.0], + "reference_system": "EPSG:25832" + }, + { + "name": "x", + "type": "spatial", + "axis": "x", + "values": [404835.0, 404845.0, 404855.0, 404865.0], + "reference_system": "EPSG:25832" + } + ], + "data": [] + } + }, + { + "arguments": { + "data": { + "$ref": "assets/xyt-more-timestamps.json5" + }, + "extent": [ + "2010-01-01T00:00:00Z", + "2030-01-01T00:00:00Z" + ] + }, + "returns": { + "$ref": "assets/xyt-more-timestamps.json5" + } + }, + { + "arguments": { + "data": { + "$ref": "assets/xyt-more-timestamps.json5" + }, + "extent": [ + null, + "2022-01-01T00:00:00Z" + ] + }, + "returns": { + "$ref": "assets/xyt-more-timestamps.json5" + } + } + ] }