RyanJsonBaseTestEqualityBool.c 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "RyanJsonBaseTest.h"
  2. // 布尔值一致性测试
  3. RyanJsonBool_e RyanJsonBaseTestEqualityBool(void)
  4. {
  5. // 测试 true
  6. {
  7. const char *jsonBoolStr = "{\"bool\":true}";
  8. RyanJson_t jsonRoot = RyanJsonParse(jsonBoolStr);
  9. RyanJsonCheckReturnFalse(NULL != jsonRoot);
  10. RyanJsonCheckReturnFalse(RyanJsonIsBool(RyanJsonGetObjectToKey(jsonRoot, "bool")));
  11. RyanJsonCheckReturnFalse(RyanJsonTrue == RyanJsonGetBoolValue(RyanJsonGetObjectToKey(jsonRoot, "bool")));
  12. // 往返测试
  13. char *serializedStr = RyanJsonPrint(jsonRoot, 64, RyanJsonFalse, NULL);
  14. RyanJsonDelete(jsonRoot);
  15. RyanJson_t roundtripJson = RyanJsonParse(serializedStr);
  16. RyanJsonFree(serializedStr);
  17. RyanJsonCheckReturnFalse(NULL != roundtripJson);
  18. RyanJsonCheckReturnFalse(RyanJsonIsBool(RyanJsonGetObjectToKey(roundtripJson, "bool")));
  19. RyanJsonCheckReturnFalse(RyanJsonTrue == RyanJsonGetBoolValue(RyanJsonGetObjectToKey(roundtripJson, "bool")));
  20. RyanJsonDelete(roundtripJson);
  21. }
  22. // 测试 false
  23. {
  24. const char *jsonBoolStr = "{\"bool\":false}";
  25. RyanJson_t jsonRoot = RyanJsonParse(jsonBoolStr);
  26. RyanJsonCheckReturnFalse(NULL != jsonRoot);
  27. RyanJsonCheckReturnFalse(RyanJsonIsBool(RyanJsonGetObjectToKey(jsonRoot, "bool")));
  28. RyanJsonCheckReturnFalse(RyanJsonFalse == RyanJsonGetBoolValue(RyanJsonGetObjectToKey(jsonRoot, "bool")));
  29. // 往返测试
  30. char *serializedStr = RyanJsonPrint(jsonRoot, 64, RyanJsonFalse, NULL);
  31. RyanJsonDelete(jsonRoot);
  32. RyanJson_t roundtripJson = RyanJsonParse(serializedStr);
  33. RyanJsonFree(serializedStr);
  34. RyanJsonCheckReturnFalse(NULL != roundtripJson);
  35. RyanJsonCheckReturnFalse(RyanJsonIsBool(RyanJsonGetObjectToKey(roundtripJson, "bool")));
  36. RyanJsonCheckReturnFalse(RyanJsonFalse == RyanJsonGetBoolValue(RyanJsonGetObjectToKey(roundtripJson, "bool")));
  37. RyanJsonDelete(roundtripJson);
  38. }
  39. // 测试数组中的布尔值
  40. {
  41. const char *jsonArrayStr = "[true, false, true, false]";
  42. RyanJson_t jsonRoot = RyanJsonParse(jsonArrayStr);
  43. RyanJsonCheckReturnFalse(NULL != jsonRoot);
  44. RyanJsonCheckReturnFalse(4 == RyanJsonGetArraySize(jsonRoot));
  45. RyanJsonBool_e expected[] = {RyanJsonTrue, RyanJsonFalse, RyanJsonTrue, RyanJsonFalse};
  46. int idx = 0;
  47. RyanJson_t item = NULL;
  48. RyanJsonArrayForEach(jsonRoot, item)
  49. {
  50. RyanJsonCheckReturnFalse(RyanJsonIsBool(item));
  51. RyanJsonCheckReturnFalse(expected[idx] == RyanJsonGetBoolValue(item));
  52. idx++;
  53. }
  54. // 往返测试
  55. char *serializedStr = RyanJsonPrint(jsonRoot, 64, RyanJsonFalse, NULL);
  56. RyanJsonDelete(jsonRoot);
  57. RyanJson_t roundtripJson = RyanJsonParse(serializedStr);
  58. RyanJsonFree(serializedStr);
  59. RyanJsonCheckReturnFalse(NULL != roundtripJson);
  60. RyanJsonCheckReturnFalse(4 == RyanJsonGetArraySize(roundtripJson));
  61. idx = 0;
  62. RyanJsonArrayForEach(roundtripJson, item)
  63. {
  64. RyanJsonCheckReturnFalse(RyanJsonIsBool(item));
  65. RyanJsonCheckReturnFalse(expected[idx] == RyanJsonGetBoolValue(item));
  66. idx++;
  67. }
  68. RyanJsonDelete(roundtripJson);
  69. }
  70. return RyanJsonTrue;
  71. }