13 #error JSON_TEST_SRC must point to test source directory
17 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
23 #define d_assert(expr) { if (!(expr)) { test_failed = true; fprintf(stderr, "%s failed\n", filename.c_str()); } }
24 #define f_assert(expr) { if (!(expr)) { test_failed = true; fprintf(stderr, "%s failed\n", __func__); } }
26 static std::string
rtrim(std::string s)
28 s.erase(s.find_last_not_of(
" \n\r\t")+1);
32 static void runtest(std::string filename,
const std::string& jdata)
34 std::string
prefix = filename.substr(0, 4);
36 bool wantPass = (
prefix ==
"pass") || (
prefix ==
"roun");
37 bool wantFail = (
prefix ==
"fail");
38 bool wantRoundTrip = (
prefix ==
"roun");
39 assert(wantPass || wantFail);
42 bool testResult = val.
read(jdata);
51 std::string odata = val.
write(0, 0);
58 std::string basename(filename_);
59 std::string filename =
srcdir +
"/" + basename;
60 FILE *f =
fopen(filename.c_str(),
"r");
67 int bread = fread(buf, 1,
sizeof(buf), f);
70 std::string s(buf, bread);
144 testResult = val.
read(
"[\"\\u0022\"]");
148 testResult = val.
read(
"[\"\\u0191\"]");
150 f_assert(val[0].get_str() ==
"\xc6\x91");
152 testResult = val.
read(
"[\"\\u2191\"]");
154 f_assert(val[0].get_str() ==
"\xe2\x86\x91");
156 testResult = val.
read(
"[\"\\ud834\\udd61\"]");
158 f_assert(val[0].get_str() ==
"\xf0\x9d\x85\xa1");
161 int main (
int argc,
char *argv[])
std::string write(unsigned int prettyIndent=0, unsigned int indentLevel=0) const
bool read(const char *raw, size_t len)
FILE * fopen(const fs::path &p, const char *mode)
int main(int argc, char *argv[])
static const char * filenames[]
static std::string rtrim(std::string s)
void unescape_unicode_test()
static void runtest(std::string filename, const std::string &jdata)
static void runtest_file(const char *filename_)
std::string srcdir(JSON_TEST_SRC)