| """Tests for schemavalidation.py.""" |
| # Copyright (c) 2023, ARM Limited. |
| # SPDX-License-Identifier: Apache-2.0 |
| import pytest |
| import schemavalidation.schemavalidation as sch |
| from jsonschema.exceptions import ValidationError |
| |
| |
| def test_schemavalidation_full_fail(): |
| json = {} |
| |
| sv = sch.TestDescSchemaValidator() |
| with pytest.raises(ValidationError) as excinfo: |
| sv.validate_config(json) |
| info = str(excinfo.value).split("\n") |
| assert info[0] == "'tosa_file' is a required property" |
| |
| |
| def test_schemavalidation_compliance_fail(): |
| json = {"version": "v"} |
| |
| sv = sch.TestDescSchemaValidator() |
| with pytest.raises(ValidationError) as excinfo: |
| sv.validate_config(json, sch.TD_SCHEMA_COMPLIANCE) |
| info = str(excinfo.value).split("\n") |
| assert info[0] == "'tensors' is a required property" |
| |
| |
| def test_schemavalidation_data_gen_fail(): |
| json = {"version": "v", "tensors": {"input": {}}} |
| |
| sv = sch.TestDescSchemaValidator() |
| with pytest.raises(ValidationError) as excinfo: |
| sv.validate_config(json, sch.TD_SCHEMA_DATA_GEN) |
| info = str(excinfo.value).split("\n") |
| assert info[0] == "'generator' is a required property" |
| |
| |
| def test_schemavalidation_full_minimal(): |
| json = { |
| "tosa_file": "file", |
| "ifm_name": ["name1", "name2"], |
| "ifm_file": ["file1", "file2"], |
| "ofm_name": ["name1", "name2"], |
| "ofm_file": ["file1", "file2"], |
| } |
| |
| sv = sch.TestDescSchemaValidator() |
| sv.validate_config(json) |
| |
| |
| def test_schemavalidation_full_unexpected(): |
| json = { |
| "tosa_file": "file", |
| "ifm_name": ["name1", "name2"], |
| "ifm_file": ["file1", "file2"], |
| "ofm_name": ["name1", "name2"], |
| "ofm_file": ["file1", "file2"], |
| "unexpected_property": 1, |
| } |
| |
| sv = sch.TestDescSchemaValidator() |
| with pytest.raises(ValidationError) as excinfo: |
| sv.validate_config(json) |
| info = str(excinfo.value).split("\n") |
| assert ( |
| info[0] |
| == "Additional properties are not allowed ('unexpected_property' was unexpected)" |
| ) |
| |
| |
| def test_schemavalidation_compliance_minimal(): |
| json = { |
| "version": "v", |
| "tensors": {"output": {"mode": "mode", "data_type": "type"}}, |
| } |
| |
| sv = sch.TestDescSchemaValidator() |
| sv.validate_config(json, sch.TD_SCHEMA_COMPLIANCE) |
| |
| |
| def test_schemavalidation_data_gen_minimal(): |
| json = { |
| "version": "v", |
| "tensors": { |
| "input": { |
| "generator": "generator", |
| "data_type": "type", |
| "input_type": "constant", |
| "shape": [], |
| "op": "name", |
| "input_pos": 0, |
| } |
| }, |
| } |
| |
| sv = sch.TestDescSchemaValidator() |
| sv.validate_config(json, sch.TD_SCHEMA_DATA_GEN) |