💚 improved test coverage
This commit is contained in:
parent
6399cd3039
commit
149d2fd09c
3 changed files with 38 additions and 49 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue