You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_int_add.c 2.5 kB

5 years ago
5 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include <assert.h>
  2. #include <stdio.h>
  3. #include "json.h"
  4. int main(int argc, char **argv)
  5. {
  6. json_object *tmp = json_object_new_int(123);
  7. json_object_int_inc(tmp, 123);
  8. assert(json_object_get_int(tmp) == 246);
  9. json_object_put(tmp);
  10. printf("INT ADD PASSED\n");
  11. tmp = json_object_new_int(INT32_MAX);
  12. json_object_int_inc(tmp, 100);
  13. assert(json_object_get_int(tmp) == INT32_MAX);
  14. assert(json_object_get_int64(tmp) == (int64_t)INT32_MAX + 100L);
  15. json_object_put(tmp);
  16. printf("INT ADD OVERFLOW PASSED\n");
  17. tmp = json_object_new_int(INT32_MIN);
  18. json_object_int_inc(tmp, -100);
  19. assert(json_object_get_int(tmp) == INT32_MIN);
  20. assert(json_object_get_int64(tmp) == (int64_t)INT32_MIN - 100L);
  21. json_object_put(tmp);
  22. printf("INT ADD UNDERFLOW PASSED\n");
  23. tmp = json_object_new_int64(321321321);
  24. json_object_int_inc(tmp, 321321321);
  25. assert(json_object_get_int(tmp) == 642642642);
  26. json_object_put(tmp);
  27. printf("INT64 ADD PASSED\n");
  28. tmp = json_object_new_int64(INT64_MAX);
  29. json_object_int_inc(tmp, 100);
  30. assert(json_object_get_int64(tmp) == INT64_MAX);
  31. assert(json_object_get_uint64(tmp) == (uint64_t)INT64_MAX + 100U);
  32. json_object_int_inc(tmp, -100);
  33. assert(json_object_get_int64(tmp) == INT64_MAX);
  34. assert(json_object_get_uint64(tmp) == (uint64_t)INT64_MAX);
  35. json_object_put(tmp);
  36. printf("INT64 ADD OVERFLOW PASSED\n");
  37. tmp = json_object_new_int64(INT64_MIN);
  38. json_object_int_inc(tmp, -100);
  39. assert(json_object_get_int64(tmp) == INT64_MIN);
  40. json_object_int_inc(tmp, 100);
  41. assert(json_object_get_int64(tmp) != INT64_MIN);
  42. json_object_put(tmp);
  43. printf("INT64 ADD UNDERFLOW PASSED\n");
  44. // uint64 + negative int64--> negative int64
  45. tmp = json_object_new_uint64(400);
  46. json_object_int_inc(tmp, -200);
  47. assert(json_object_get_int64(tmp) == 200);
  48. assert(json_object_get_uint64(tmp) == 200);
  49. json_object_int_inc(tmp, 200);
  50. assert(json_object_get_int64(tmp) == 400);
  51. assert(json_object_get_uint64(tmp) == 400);
  52. json_object_put(tmp);
  53. printf("UINT64 ADD PASSED\n");
  54. tmp = json_object_new_uint64(UINT64_MAX-50);
  55. json_object_int_inc(tmp, 100);
  56. assert(json_object_get_int64(tmp) == INT64_MAX);
  57. assert(json_object_get_uint64(tmp) == UINT64_MAX);
  58. json_object_put(tmp);
  59. printf("UINT64 ADD OVERFLOW PASSED\n");
  60. tmp = json_object_new_uint64(100);
  61. json_object_int_inc(tmp, -200);
  62. assert(json_object_get_int64(tmp) == -100);
  63. assert(json_object_get_uint64(tmp) == 0);
  64. json_object_put(tmp);
  65. printf("UINT64 ADD UNDERFLOW PASSED\n");
  66. printf("PASSED\n");
  67. return 0;
  68. }