validator: implement minItems and maxItems for arrays
This commit is contained in:
parent
7daee089ca
commit
615b4a1fef
@ -84,7 +84,7 @@ int main(void)
|
||||
There is an application which can be used for testing the validator with the
|
||||
[JSON-Schema-Test-Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite).
|
||||
|
||||
Currently **145** tests are still failing, because simply not all keywords and
|
||||
Currently **120** tests are still failing, because simply not all keywords and
|
||||
their functionalities have been implemented. Some of the missing feature will
|
||||
require a rework. Some will only work with external libraries. (remote references)
|
||||
|
||||
|
||||
@ -172,14 +172,24 @@ class json_validator
|
||||
validate_type(schema, "null", name);
|
||||
}
|
||||
|
||||
void validate_array(json & /*instance*/, const json &schema, const std::string &name)
|
||||
void validate_array(json &instance, const json &schema, const std::string &name)
|
||||
{
|
||||
not_yet_implemented(schema, "maxItems", "array");
|
||||
not_yet_implemented(schema, "minItems", "array");
|
||||
not_yet_implemented(schema, "uniqueItems", "array");
|
||||
not_yet_implemented(schema, "items", "array");
|
||||
not_yet_implemented(schema, "additionalItems", "array");
|
||||
|
||||
// maxItems
|
||||
const auto &maxItems = schema.find("maxItems");
|
||||
if (maxItems != schema.end())
|
||||
if (instance.size() > maxItems.value())
|
||||
throw std::out_of_range(name + " has too many items.");
|
||||
|
||||
// minItems
|
||||
const auto &minItems = schema.find("minItems");
|
||||
if (minItems != schema.end())
|
||||
if (instance.size() < minItems.value())
|
||||
throw std::out_of_range(name + " has too many items.");
|
||||
|
||||
validate_type(schema, "array", name);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user