1 #define BOOST_TEST_DYN_LINK
2 #include <boost/test/unit_test.hpp>
8 #include <boost/filesystem.hpp>
26 "uniform_array" : [1, 2, 3, 4],
31 {"int" : 34, "number" : 4.0023}
36 BOOST_AUTO_TEST_SUITE(jsonParserTest)
42 BOOST_CHECK_EQUAL(true, json.
is_obj());
47 BOOST_CHECK_EQUAL(i, 34);
48 BOOST_CHECK_EQUAL(34, json[
"int"].get<int>());
52 BOOST_CHECK_EQUAL(d, 4.0023);
53 BOOST_CHECK_EQUAL(4.0023, json[
"number"].get<double>());
58 std::string json_extra_trailing_comma =
72 "uniform_array" : [1, 2, 3, 4,],
77 {"int" : 34, "number" : 4.0023}
83 json.read(json_extra_trailing_comma);
85 BOOST_CHECK_EQUAL(json.read(json_extra_trailing_comma), false);
88 BOOST_CHECK_THROW(
jsonParser::parse(json_extra_trailing_comma), std::runtime_error);
94 std::string json_missing_comma =
100 "bool_false" : false,
108 "uniform_array" : [1, 2 3, 4],
113 {"int" : 34, "number" : 4.0023}
119 json.read(json_missing_comma);
121 BOOST_CHECK_EQUAL(json.read(json_missing_comma), false);
133 B[
"object"][
"number"] = B[
"object"][
"number"].
get<
double>() + 1e-8;
139 BOOST_CHECK_EQUAL(diff_point,
fs::path(
"object/number"));
140 BOOST_CHECK_EQUAL(A.
at(diff_point), 4.0023);
143 BOOST_CHECK(diff_point.empty());
147 BOOST_AUTO_TEST_SUITE_END()
void from_json(ClexDescription &desc, const jsonParser &json)
boost::filesystem::path find_diff(const jsonParser &A, const jsonParser &B, boost::filesystem::path diff=boost::filesystem::path())
Return the location at which jsonParser 'A' != 'B' as a boost::filesystem::path.
jsonParser & at(const fs::path &path)
bool read(std::istream &stream)
Reads json from the stream.
BOOST_AUTO_TEST_CASE(Basic)
T get(Args...args) const
Get data from json, using one of several alternatives.
bool is_obj() const
Check if object type.
static jsonParser parse(const std::string &str)
Construct a jsonParser from a string containing JSON data.
bool almost_equal(const jsonParser &B, double tol) const