"""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)