RyanJsonBaseTestCompareJson.c 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include "RyanJsonBaseTest.h"
  2. /* --------------------------------------------------------------------- */
  3. RyanJsonBool_e RyanJsonBaseTestCompareJson(void)
  4. {
  5. char jsonstr[] = "{\"inter\":16,\"double\":16.89,\"string\":\"hello\",\"boolTrue\":true,\"boolFalse\":false,\"null\":null,\"item\":"
  6. "{\"inter\":16,\"double\":16."
  7. "89,\"string\":\"hello\","
  8. "\"boolTrue\":true,\"boolFalse\":false,\"null\":null},\"arrayInt\":[16,16,16,16,16],\"arrayDouble\":[16.89,16.89,"
  9. "16.89,16.89,16.89],"
  10. "\"arrayString\":[\"hello\",\"hello\","
  11. "\"hello\",\"hello\",\"hello\"],\"array\":[16,16.89,\"hello\",true,false,null],\"arrayItem\":[{\"inter\":16,"
  12. "\"double\":16.89,\"string\":"
  13. "\"hello\",\"boolTrue\":true,"
  14. "\"boolFalse\":false,\"null\":null},{\"inter\":16,\"double\":16.89,\"string\":\"hello\",\"boolTrue\":true,"
  15. "\"boolFalse\":false,\"null\":null}]}";
  16. RyanJson_t json = RyanJsonParse(jsonstr);
  17. RyanJson_t json2 = RyanJsonParse(jsonstr);
  18. // 比较函数
  19. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompare(json, json2), { goto err; });
  20. RyanJsonDelete(json2);
  21. json2 = RyanJsonParse(jsonstr);
  22. RyanJsonAddStringToObject(json2, "test", "hello");
  23. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  24. RyanJsonDelete(json2);
  25. json2 = RyanJsonParse(jsonstr);
  26. RyanJsonAddIntToObject(json2, "test", 1);
  27. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  28. RyanJsonDelete(json2);
  29. json2 = RyanJsonParse(jsonstr);
  30. RyanJsonAddDoubleToObject(json2, "test", 2.0);
  31. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  32. RyanJsonDelete(json2);
  33. json2 = RyanJsonParse(jsonstr);
  34. RyanJsonAddBoolToObject(json2, "test", RyanJsonTrue);
  35. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  36. RyanJsonDelete(json2);
  37. json2 = RyanJsonParse(jsonstr);
  38. RyanJsonAddNullToObject(json2, "test");
  39. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  40. RyanJsonDelete(json2);
  41. json2 = RyanJsonParse(jsonstr);
  42. RyanJsonAddIntToArray(RyanJsonGetObjectToKey(json2, "arrayInt"), 2);
  43. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  44. RyanJsonDelete(json2);
  45. json2 = RyanJsonParse(jsonstr);
  46. RyanJsonAddDoubleToArray(RyanJsonGetObjectToKey(json2, "arrayDouble"), 2.0);
  47. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  48. RyanJsonDelete(json2);
  49. json2 = RyanJsonParse(jsonstr);
  50. RyanJsonAddStringToArray(RyanJsonGetObjectToKey(json2, "arrayString"), "hello");
  51. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  52. RyanJsonDelete(json2);
  53. json2 = RyanJsonParse(jsonstr);
  54. RyanJsonAddItemToArray(RyanJsonGetObjectToKey(json2, "arrayItem"), RyanJsonCreateString("test", "hello"));
  55. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  56. RyanJsonDelete(json2);
  57. json2 = RyanJsonParse(jsonstr);
  58. RyanJsonChangeKey(RyanJsonGetObjectToKey(json2, "inter"), "int2");
  59. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  60. RyanJsonDelete(json2);
  61. json2 = RyanJsonParse(jsonstr);
  62. RyanJsonChangeIntValue(RyanJsonGetObjectToKey(json2, "inter"), 17);
  63. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  64. RyanJsonDelete(json2);
  65. json2 = RyanJsonParse(jsonstr);
  66. RyanJsonChangeDoubleValue(RyanJsonGetObjectToKey(json2, "double"), 20.89);
  67. if (RyanJsonFalse != RyanJsonCompare(json, json2))
  68. {
  69. printf("%s:%d 解析失败\r\n", __FILE__, __LINE__);
  70. goto err;
  71. }
  72. RyanJsonDelete(json2);
  73. json2 = RyanJsonParse(jsonstr);
  74. RyanJsonDelete(RyanJsonDetachByKey(json2, "double"));
  75. RyanJsonAddIntToObject(json2, "double", 20); // 改为int
  76. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  77. RyanJsonDelete(json2);
  78. json2 = RyanJsonParse(jsonstr);
  79. RyanJsonChangeStringValue(RyanJsonGetObjectToKey(json2, "string"), "49");
  80. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  81. RyanJsonDelete(json2);
  82. json2 = RyanJsonParse(jsonstr);
  83. RyanJsonChangeBoolValue(RyanJsonGetObjectToKey(json2, "boolTrue"), RyanJsonFalse);
  84. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  85. RyanJsonDelete(json2);
  86. json2 = RyanJsonParse(jsonstr);
  87. RyanJsonChangeBoolValue(RyanJsonGetObjectToKey(json2, "item", "boolTrue"), RyanJsonFalse);
  88. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  89. RyanJsonDelete(json2);
  90. json2 = RyanJsonParse(jsonstr);
  91. RyanJsonChangeIntValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayInt"), 0), 17);
  92. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  93. RyanJsonDelete(json2);
  94. json2 = RyanJsonParse(jsonstr);
  95. RyanJsonChangeDoubleValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayDouble"), 0), 20.89);
  96. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  97. RyanJsonDelete(json2);
  98. json2 = RyanJsonParse(jsonstr);
  99. RyanJsonChangeStringValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayString"), 0), "20.89");
  100. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  101. RyanJsonDelete(json2);
  102. json2 = RyanJsonParse(jsonstr);
  103. RyanJsonChangeIntValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "array"), 0), 17);
  104. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  105. RyanJsonDelete(json2);
  106. json2 = RyanJsonParse(jsonstr);
  107. RyanJsonChangeIntValue(RyanJsonGetObjectToKey(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayItem"), 0), "inter"),
  108. 17);
  109. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  110. RyanJsonDelete(json2);
  111. json2 = RyanJsonParse(jsonstr);
  112. RyanJsonDeleteByKey(json2, "arrayItem");
  113. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  114. RyanJsonDelete(json2);
  115. json2 = RyanJsonParse(jsonstr);
  116. RyanJsonDeleteByIndex(RyanJsonGetObjectToKey(json2, "arrayInt"), 2);
  117. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  118. RyanJsonDelete(json2);
  119. json2 = RyanJsonParse(jsonstr);
  120. RyanJsonDeleteByIndex(RyanJsonGetObjectToKey(json2, "arrayItem"), 0);
  121. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  122. RyanJsonDelete(json);
  123. RyanJsonDelete(json2);
  124. return RyanJsonTrue;
  125. err:
  126. RyanJsonDelete(json);
  127. RyanJsonDelete(json2);
  128. return RyanJsonFalse;
  129. }