RyanJsonBaseTestCompareJson.c 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompare(json, json), { goto err; });
  21. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json), { goto err; });
  22. RyanJsonDelete(json2);
  23. json2 = RyanJsonParse(jsonstr);
  24. RyanJsonAddStringToObject(json2, "test", "hello");
  25. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  26. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  27. RyanJsonDelete(json2);
  28. json2 = RyanJsonParse(jsonstr);
  29. RyanJsonAddIntToObject(json2, "test", 1);
  30. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  31. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  32. RyanJsonDelete(json2);
  33. json2 = RyanJsonParse(jsonstr);
  34. RyanJsonAddDoubleToObject(json2, "test", 2.0);
  35. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  36. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  37. RyanJsonDelete(json2);
  38. json2 = RyanJsonParse(jsonstr);
  39. RyanJsonAddBoolToObject(json2, "test", RyanJsonTrue);
  40. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  41. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  42. RyanJsonDelete(json2);
  43. json2 = RyanJsonParse(jsonstr);
  44. RyanJsonAddNullToObject(json2, "test");
  45. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  46. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  47. RyanJsonDelete(json2);
  48. json2 = RyanJsonParse(jsonstr);
  49. RyanJsonAddIntToArray(RyanJsonGetObjectToKey(json2, "arrayInt"), 2);
  50. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  51. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  52. RyanJsonDelete(json2);
  53. json2 = RyanJsonParse(jsonstr);
  54. RyanJsonAddDoubleToArray(RyanJsonGetObjectToKey(json2, "arrayDouble"), 2.0);
  55. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  56. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  57. RyanJsonDelete(json2);
  58. json2 = RyanJsonParse(jsonstr);
  59. RyanJsonAddStringToArray(RyanJsonGetObjectToKey(json2, "arrayString"), "hello");
  60. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  61. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  62. RyanJsonDelete(json2);
  63. json2 = RyanJsonParse(jsonstr);
  64. RyanJsonAddItemToArray(RyanJsonGetObjectToKey(json2, "arrayItem"), RyanJsonCreateString("test", "hello"));
  65. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  66. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  67. RyanJsonDelete(json2);
  68. json2 = RyanJsonParse(jsonstr);
  69. RyanJsonChangeKey(RyanJsonGetObjectToKey(json2, "inter"), "int2");
  70. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  71. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  72. RyanJsonDelete(json2);
  73. json2 = RyanJsonParse(jsonstr);
  74. RyanJsonChangeIntValue(RyanJsonGetObjectToKey(json2, "inter"), 17);
  75. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  76. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  77. RyanJsonDelete(json2);
  78. json2 = RyanJsonParse(jsonstr);
  79. RyanJsonChangeDoubleValue(RyanJsonGetObjectToKey(json2, "double"), 20.89);
  80. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  81. if (RyanJsonFalse != RyanJsonCompare(json, json2))
  82. {
  83. printf("%s:%d 解析失败\r\n", __FILE__, __LINE__);
  84. goto err;
  85. }
  86. RyanJsonDelete(json2);
  87. json2 = RyanJsonParse(jsonstr);
  88. RyanJsonDelete(RyanJsonDetachByKey(json2, "double"));
  89. RyanJsonAddIntToObject(json2, "double", 20); // 改为int
  90. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  91. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  92. RyanJsonDelete(json2);
  93. json2 = RyanJsonParse(jsonstr);
  94. RyanJsonChangeStringValue(RyanJsonGetObjectToKey(json2, "string"), "49");
  95. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  96. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  97. RyanJsonDelete(json2);
  98. json2 = RyanJsonParse(jsonstr);
  99. RyanJsonChangeBoolValue(RyanJsonGetObjectToKey(json2, "boolTrue"), RyanJsonFalse);
  100. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  101. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  102. RyanJsonDelete(json2);
  103. json2 = RyanJsonParse(jsonstr);
  104. RyanJsonChangeBoolValue(RyanJsonGetObjectToKey(json2, "item", "boolTrue"), RyanJsonFalse);
  105. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  106. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  107. RyanJsonDelete(json2);
  108. json2 = RyanJsonParse(jsonstr);
  109. RyanJsonChangeIntValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayInt"), 0), 17);
  110. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  111. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  112. RyanJsonDelete(json2);
  113. json2 = RyanJsonParse(jsonstr);
  114. RyanJsonChangeDoubleValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayDouble"), 0), 20.89);
  115. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  116. RyanJsonDelete(json2);
  117. json2 = RyanJsonParse(jsonstr);
  118. RyanJsonChangeStringValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayString"), 0), "20.89");
  119. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  120. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  121. RyanJsonDelete(json2);
  122. json2 = RyanJsonParse(jsonstr);
  123. RyanJsonChangeIntValue(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "array"), 0), 17);
  124. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  125. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  126. RyanJsonDelete(json2);
  127. json2 = RyanJsonParse(jsonstr);
  128. RyanJsonChangeIntValue(RyanJsonGetObjectToKey(RyanJsonGetObjectToIndex(RyanJsonGetObjectToKey(json2, "arrayItem"), 0), "inter"),
  129. 17);
  130. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  131. RyanJsonCheckCode(RyanJsonTrue == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  132. RyanJsonDelete(json2);
  133. json2 = RyanJsonParse(jsonstr);
  134. RyanJsonDeleteByKey(json2, "arrayItem");
  135. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  136. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  137. RyanJsonDelete(json2);
  138. json2 = RyanJsonParse(jsonstr);
  139. RyanJsonDeleteByIndex(RyanJsonGetObjectToKey(json2, "arrayInt"), 2);
  140. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  141. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  142. RyanJsonDelete(json2);
  143. json2 = RyanJsonParse(jsonstr);
  144. RyanJsonDeleteByIndex(RyanJsonGetObjectToKey(json2, "arrayItem"), 0);
  145. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompare(json, json2), { goto err; });
  146. RyanJsonCheckCode(RyanJsonFalse == RyanJsonCompareOnlyKey(json, json2), { goto err; });
  147. RyanJsonDelete(json);
  148. RyanJsonDelete(json2);
  149. return RyanJsonTrue;
  150. err:
  151. RyanJsonDelete(json);
  152. RyanJsonDelete(json2);
  153. return RyanJsonFalse;
  154. }