From 0128483ef86c4e529be45dde7fdf4b9f9d45a6b4 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Mon, 6 May 2024 11:13:52 +0200 Subject: [PATCH] Require two elements in covering elements (#210) --- format-specs/schema.json | 12 ++++++++---- scripts/test_json_schema.py | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/format-specs/schema.json b/format-specs/schema.json index 241d68e..7db7ab0 100644 --- a/format-specs/schema.json +++ b/format-specs/schema.json @@ -86,7 +86,8 @@ { "type": "string" }, { "const": "xmin" } ], - "additionalItems": false + "minItems": 2, + "maxItems": 2 }, "xmax": { "type": "array", @@ -94,7 +95,8 @@ { "type": "string" }, { "const": "xmax" } ], - "additionalItems": false + "minItems": 2, + "maxItems": 2 }, "ymin": { "type": "array", @@ -102,7 +104,8 @@ { "type": "string" }, { "const": "ymin" } ], - "additionalItems": false + "minItems": 2, + "maxItems": 2 }, "ymax": { "type": "array", @@ -110,7 +113,8 @@ { "type": "string" }, { "const": "ymax" } ], - "additionalItems": false + "minItems": 2, + "maxItems": 2 } } } diff --git a/scripts/test_json_schema.py b/scripts/test_json_schema.py index f0217c1..be0888f 100644 --- a/scripts/test_json_schema.py +++ b/scripts/test_json_schema.py @@ -235,6 +235,26 @@ def get_version() -> str: } valid_cases["valid_but_not_bbox_struct_name"] = metadata +metadata = copy.deepcopy(metadata_covering_template) +metadata["columns"]["geometry"]["covering"]["bbox"]["xmin"] = [] +invalid_cases["xmin_array_length_must_be_2_is_0"] = metadata + +metadata = copy.deepcopy(metadata_covering_template) +metadata["columns"]["geometry"]["covering"]["bbox"]["ymax"] = [] +invalid_cases["ymax_array_length_must_be_2_is_0"] = metadata + +metadata = copy.deepcopy(metadata_covering_template) +metadata["columns"]["geometry"]["covering"]["bbox"]["ymin"] = ["column"] +invalid_cases["ymin_array_length_must_be_2_is_1"] = metadata + +metadata = copy.deepcopy(metadata_covering_template) +metadata["columns"]["geometry"]["covering"]["bbox"]["xmax"] = ["column"] +invalid_cases["xmax_array_length_must_be_2_is_1"] = metadata + +metadata = copy.deepcopy(metadata_covering_template) +metadata["columns"]["geometry"]["covering"]["bbox"]["xmin"] = ["xmin", "xmin", "xmin"] +invalid_cases["xmin_array_length_must_be_2_is_3"] = metadata + metadata = copy.deepcopy(metadata_covering_template) metadata["columns"]["geometry"]["covering"].pop("bbox") invalid_cases["empty_geometry_bbox"] = metadata