From 66efaf9e9708b28d50a58d34a396fa3368f379dc Mon Sep 17 00:00:00 2001 From: "Benjamin C. Johnsenberg" Date: Mon, 13 May 2024 09:41:40 -0400 Subject: [PATCH] Added expected values to enum and const error messages --- src/json-validator.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/json-validator.cpp b/src/json-validator.cpp index 5137fe9..12d8bf1 100644 --- a/src/json-validator.cpp +++ b/src/json-validator.cpp @@ -429,26 +429,25 @@ enum logical_combination_types { class logical_combination_error_handler : public error_handler { public: - struct error_entry - { + struct error_entry { json::json_pointer ptr_; json instance_; std::string message_; }; std::vector error_entry_list_; - + void error(const json::json_pointer &ptr, const json &instance, const std::string &message) override { - error_entry_list_.push_back(error_entry{ ptr, instance, message }); + error_entry_list_.push_back(error_entry{ptr, instance, message}); } - void propagate(error_handler& e, const std::string& prefix) const + void propagate(error_handler &e, const std::string &prefix) const { - for (const error_entry& entry : error_entry_list_) + for (const error_entry &entry : error_entry_list_) e.error(entry.ptr_, entry.instance_, prefix + entry.message_); } - + operator bool() const { return !error_entry_list_.empty(); } }; @@ -463,7 +462,7 @@ class logical_combination : public schema logical_combination_error_handler error_summary; for (std::size_t index = 0; index < subschemata_.size(); ++index) { - const std::shared_ptr& s = subschemata_[index]; + const std::shared_ptr &s = subschemata_[index]; logical_combination_error_handler esub; auto oldPatchSize = patch.get_json().size(); s->validate(ptr, instance, patch, esub); @@ -513,8 +512,7 @@ const std::string logical_combination::key = "oneOf"; template <> bool logical_combination::is_validate_complete(const json &, const json::json_pointer &, error_handler &e, const logical_combination_error_handler &esub, size_t, size_t current_schema_index) { - if (esub) - { + if (esub) { e.error(esub.error_entry_list_.front().ptr_, esub.error_entry_list_.front().instance_, "at least one subschema has failed, but all of them are required to validate - " + esub.error_entry_list_.front().message_); esub.propagate(e, "[combination: allOf / case#" + std::to_string(current_schema_index) + "] "); } @@ -568,12 +566,12 @@ class type_schema : public schema } if (!seen_in_enum) - e.error(ptr, instance, "instance not found in required enum"); + e.error(ptr, instance, "instance not found in required enum " + enum_.second.dump()); } if (const_.first && const_.second != instance) - e.error(ptr, instance, "instance not const"); + e.error(ptr, instance, "instance not const value '" + const_.second.dump() + "'"); for (auto l : logic_) l->validate(ptr, instance, patch, e);