1
0
mirror of https://github.com/nlohmann/json.git synced 2025-08-07 18:02:57 +03:00

💚 improved test coverage

This commit is contained in:
Niels Lohmann
2018-03-10 11:24:00 +01:00
parent 6399cd3039
commit 149d2fd09c
3 changed files with 38 additions and 49 deletions

View File

@@ -164,6 +164,8 @@ class parser
{
// never parse after a parse error was detected
assert(not errored);
// this function is only called when a callback is given
assert(callback);
// start with a discarded value
if (not result.is_discarded())
@@ -178,12 +180,9 @@ class parser
{
if (keep)
{
if (callback)
{
keep = callback(depth++, parse_event_t::object_start, result);
}
keep = callback(depth++, parse_event_t::object_start, result);
if (not callback or keep)
if (keep)
{
// explicitly set result to object to cope with {}
result.m_type = value_t::object;
@@ -197,7 +196,7 @@ class parser
// closing } -> we are done
if (last_token == token_type::end_object)
{
if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
if (keep and not callback(--depth, parse_event_t::object_end, result))
{
result.m_value.destroy(result.m_type);
result.m_type = value_t::discarded;
@@ -220,15 +219,8 @@ class parser
bool keep_tag = false;
if (keep)
{
if (callback)
{
BasicJsonType k(key);
keep_tag = callback(depth, parse_event_t::key, k);
}
else
{
keep_tag = true;
}
BasicJsonType k(key);
keep_tag = callback(depth, parse_event_t::key, k);
}
// parse separator (:)
@@ -270,7 +262,7 @@ class parser
break;
}
if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
if (keep and not callback(--depth, parse_event_t::object_end, result))
{
result.m_value.destroy(result.m_type);
result.m_type = value_t::discarded;
@@ -282,12 +274,9 @@ class parser
{
if (keep)
{
if (callback)
{
keep = callback(depth++, parse_event_t::array_start, result);
}
keep = callback(depth++, parse_event_t::array_start, result);
if (not callback or keep)
if (keep)
{
// explicitly set result to array to cope with []
result.m_type = value_t::array;
@@ -301,7 +290,7 @@ class parser
// closing ] -> we are done
if (last_token == token_type::end_array)
{
if (callback and not callback(--depth, parse_event_t::array_end, result))
if (not callback(--depth, parse_event_t::array_end, result))
{
result.m_value.destroy(result.m_type);
result.m_type = value_t::discarded;
@@ -344,7 +333,7 @@ class parser
break;
}
if (keep and callback and not callback(--depth, parse_event_t::array_end, result))
if (keep and not callback(--depth, parse_event_t::array_end, result))
{
result.m_value.destroy(result.m_type);
result.m_type = value_t::discarded;
@@ -432,7 +421,7 @@ class parser
}
}
if (keep and callback and not callback(depth, parse_event_t::value, result))
if (keep and not callback(depth, parse_event_t::value, result))
{
result.m_value.destroy(result.m_type);
result.m_type = value_t::discarded;