testMembers()
{
// write_some(char const*, size_t, error_code&)
+ // write_some(char const*, size_t, std::error_code&)
// write_some(string_view, error_code&)
+ // write_some(string_view, std::error_code&)
{
{
stream_parser p;
"[]*", ec) == 2);
BOOST_TEST(! ec);
}
+ {
+ stream_parser p;
+ std::error_code ec;
+ BOOST_TEST(p.write_some(
+ "[]*", ec) == 2);
+ BOOST_TEST(! ec);
+ }
{
stream_parser p;
error_code ec;
"[*", ec) == 1);
BOOST_TEST(ec);
}
+ {
+ stream_parser p;
+ std::error_code ec;
+ BOOST_TEST(p.write_some(
+ "[*", ec) == 1);
+ BOOST_TEST(ec);
+ }
}
// write_some(char const*, size_t)
}
// write(char const*, size_t, error_code&)
+ // write(char const*, size_t, std::error_code&)
// write(string_view, error_code&)
+ // write(string_view, std::error_code&)
{
{
stream_parser p;
"null", ec) == 4);
BOOST_TEST(! ec);
}
+ {
+ stream_parser p;
+ std::error_code ec;
+ BOOST_TEST(p.write(
+ "null", ec) == 4);
+ BOOST_TEST(! ec);
+ }
{
stream_parser p;
error_code ec;
p.write("[]*", ec),
BOOST_TEST(
ec == error::extra_data);
+ BOOST_TEST(ec.has_location());
+ }
+ {
+ stream_parser p;
+ std::error_code ec;
+ p.write("[]*", ec),
+ BOOST_TEST(ec == error::extra_data);
}
}
}
}
- // finish(error_code&)
// finish()
+ // finish(error_code&)
+ // finish(std::error_code&)
{
{
stream_parser p;
p.finish(ec);
BOOST_TEST(
ec == error::incomplete);
+ BOOST_TEST(ec.has_location());
}
{
stream_parser p;
p.finish(),
system_error);
}
+ {
+ stream_parser p;
+ p.write("[1,2");
+ std::error_code ec;
+ p.finish(ec);
+ BOOST_TEST(ec == error::incomplete);
+ }
+ {
+ stream_parser p;
+ p.write("[1,2");
+ std::error_code ec;
+ p.finish(ec);
+ BOOST_TEST_THROWS(
+ p.finish(),
+ system_error);
+ }
}
// release()
p.write("[]*", ec);
BOOST_TEST(
ec == error::extra_data);
+ BOOST_TEST(ec.has_location());
BOOST_TEST(! p.done());
BOOST_TEST_THROWS(
p.release(),
void
static
- check_round_trip(value const& jv1,
+ check_round_trip(value const& jv1,
const parse_options& po = parse_options())
{
auto const s2 =
template<class F>
static
void
- grind(string_view s, F const& f,
+ grind(string_view s, F const& f,
const parse_options& po = parse_options())
{
try
static
void
- grind(string_view s,
+ grind(string_view s,
const parse_options& po = parse_options())
{
grind(s,
if(BOOST_TEST(! ec))
check_round_trip(
p.release());
- }
+ }
}
}
}
//------------------------------------------------------
-
+
struct f_boost
{
static
p.write("[]", 2, ec);
BOOST_TEST(
ec == error::too_deep);
+ BOOST_TEST(ec.has_location());
}
}
p.write("{}", 2, ec);
BOOST_TEST(
ec == error::too_deep);
+ BOOST_TEST(ec.has_location());
}
}
error_code ec;
auto jv = parse("xxx", ec);
BOOST_TEST(ec);
+ BOOST_TEST(ec.has_location());
BOOST_TEST(jv.is_null());
}
}
monotonic_resource mr;
auto jv = parse("xxx", ec, &mr);
BOOST_TEST(ec);
+ BOOST_TEST(ec.has_location());
BOOST_TEST(jv.is_null());
}
}
}
}
})xx";
- string_view out =
+ string_view out =
"{\"glossary\":{\"title\":\"example glossary\",\"GlossDiv\":"
"{\"title\":\"S\",\"GlossList\":{\"GlossEntry\":{\"ID\":\"SGML\","
"\"SortAs\":\"SGML\",\"GlossTerm\":\"Standard Generalized Markup "
"\"GlossDef\":{\"para\":\"A meta-markup language, used to create "
"markup languages such as DocBook.\",\"GlossSeeAlso\":[\"GML\",\"XML\"]},"
"\"GlossSee\":\"markup\"}}}}}";
- storage_ptr sp =
+ storage_ptr sp =
make_shared_resource<monotonic_resource>();
stream_parser p(sp);
error_code ec;
BOOST_TEST(serialize(p.release()) == out);
}
- void
+ void
testTrailingCommas()
{
parse_options enabled;
grind("{\"a\":1// c++ \n, \"b\":2}", enabled);
grind("{\"a\":1, // c++ \n \"b\":2}", enabled);
grind("{\"a\"// c++ \n:1}", enabled);
- grind("{\"a\":// c++ \n1}", enabled);
+ grind("{\"a\":// c++ \n1}", enabled);
}
void