#include #include "UDPTCPNetwork.h" int test_json_basic() { JSONParse jpa; JSONParse jp; JSONElement je; std::string s = ""; int i, r = 0; jp.Clear(); jp.AddObject("somestring", "Test \"embedded\" string"); je.Clear(); for (i = 0; i < 4; i++) { jpa.Clear(); jpa.AddObject("value_i", i); jpa.AddObject("value_2i", i*2); je.SetAddArrayEscaped("testarray", jpa.ToString()); } jp.AddObject(je); jp.GetValueString("somestring", &s); for (r = 1, i = 0; i < 4; i++) { int a = 0, b = 1; jpa.Clear(); jp.GetObjectIdx("testarray", i, &jpa); jpa.GetValueInt("value_i", &a); jpa.GetValueInt("value_2i", &b); if (a *2 != b) r = 0; } return r; }; // test embedded arrays, write and read from file. int test_json_embedded() { char* test_char[] = {"one", "two", "three", "four", "five", "six", NULL}; JSONParse jp,jpdata; JSONElement je, je1, je2; std::string s = ""; int j,i, r = 0; jp.Clear(); je.Clear(); for (i = 0; test_char[i] != NULL; i++) { jpdata.Clear(); jpdata.AddObject("name", test_char[i]); jpdata.AddObject("index", i); je1.Clear(); for (int j = 0; j < 4; j++) { je1.SetAddArray("intarray", j); } je2.Clear(); for (j = 0; test_char[j] != NULL; j++) { je2.SetAddArray("stringarray", test_char[j]); } jpdata.AddObject(je1); jpdata.AddObject(je2); je.SetAddArrayEscaped("testarray", jpdata.ToString()); } jp.AddObject(je); jp.SaveToFile("test.json"); // reload from file jp.Clear(); je.Clear(); je1.Clear(); je2.Clear(); jp.LoadFromFile("test.json"); for (r = 1, i = 0; test_char[i] != NULL; i++) { jpdata.Clear(); jp.GetObjectIdx("testarray", i, &jpdata); jpdata.GetValueString("name", &s); if (s.compare(test_char[i]) != 0) { printf ("test_json_embedded: name mismatch: %s != %s\n", s.c_str(), test_char[i]); r = 0; } int idx = -1; jpdata.GetValueInt("index", &idx); if (idx != i) { printf ("test_json_embedded: index mismatch: %d != %d\n", idx, i); r = 0; } // check intarray for (j = 0; j < 4; j++) { std::string v = ""; jpdata.GetValueIdx("intarray", j, &v); if (atoi (v.c_str()) != j) { printf ("test_json_embedded: intarray mismatch: %s != %d\n", v.c_str(), j); r = 0; } } // check stringarray for (j = 0; test_char[j] != NULL; j++) { jpdata.GetValueIdx("stringarray", j, &s); if (s.compare(test_char[j]) != 0) { printf ("test_json_embedded: stringarray mismatch: %s != %s\n", s.c_str(), test_char[j]); r = 0; } } } // delete testfile remove("test.json"); return r; }; int main(int argc, char** argv) { int ret = 0; int res = 0; if ((ret = test_json_basic()) == 0) res = 1; printf ("test_json_basic: %s\n", ret ? "PASSED" : "FAILED"); if ((ret = test_json_embedded()) == 0) res = 1; printf ("test_json_embedded: %s\n", ret ? "PASSED" : "FAILED"); return res; };