|
|
@@ -0,0 +1,145 @@ |
|
|
|
/* |
|
|
|
* Tests if json_object_equal behaves correct. |
|
|
|
*/ |
|
|
|
|
|
|
|
#include <stdio.h> |
|
|
|
#include <string.h> |
|
|
|
#include "config.h" |
|
|
|
|
|
|
|
#include "json_inttypes.h" |
|
|
|
#include "json_object.h" |
|
|
|
#include "json_tokener.h" |
|
|
|
|
|
|
|
int main() |
|
|
|
{ |
|
|
|
/* integer tests */ |
|
|
|
struct json_object *int1 = json_object_new_int(0); |
|
|
|
struct json_object *int2 = json_object_new_int(1); |
|
|
|
struct json_object *int3 = json_object_new_int(1); |
|
|
|
|
|
|
|
if (!json_object_equal(int1, int2)) |
|
|
|
printf("JSON integer comparision is correct\n"); |
|
|
|
else |
|
|
|
printf("JSON integer comparision failed\n"); |
|
|
|
|
|
|
|
if (json_object_equal(int1, int1)) |
|
|
|
printf("JSON same object comparision is correct\n"); |
|
|
|
else |
|
|
|
printf("JSON same object comparision failed\n"); |
|
|
|
|
|
|
|
if (json_object_equal(int2, int3)) |
|
|
|
printf("JSON same integer comparision is correct\n"); |
|
|
|
else |
|
|
|
printf("JSON same integer comparision failed\n"); |
|
|
|
|
|
|
|
json_object_put(int1); |
|
|
|
json_object_put(int2); |
|
|
|
json_object_put(int3); |
|
|
|
|
|
|
|
/* string tests */ |
|
|
|
struct json_object *str1 = json_object_new_string("TESTSTRING"); |
|
|
|
struct json_object *str2 = json_object_new_string("TESTSTRING"); |
|
|
|
struct json_object *str3 = json_object_new_string("DIFFERENT"); |
|
|
|
|
|
|
|
if (json_object_equal(str1, str2)) |
|
|
|
printf("Comparing equal strings is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing equal strings failed\n"); |
|
|
|
|
|
|
|
if (!json_object_equal(str1, str3)) |
|
|
|
printf("Comparing different strings is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing different strings failed\n"); |
|
|
|
|
|
|
|
json_object_put(str1); |
|
|
|
json_object_put(str2); |
|
|
|
json_object_put(str3); |
|
|
|
|
|
|
|
/* double tests */ |
|
|
|
struct json_object *dbl1 = json_object_new_double(3.14159); |
|
|
|
struct json_object *dbl2 = json_object_new_double(3.14159); |
|
|
|
struct json_object *dbl3 = json_object_new_double(3.0); |
|
|
|
|
|
|
|
if (json_object_equal(dbl1, dbl2)) |
|
|
|
printf("Comparing equal doubles is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing equal doubles failed\n"); |
|
|
|
|
|
|
|
if (!json_object_equal(dbl1, dbl3)) |
|
|
|
printf("Comparing different doubles is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing different doubles failed\n"); |
|
|
|
|
|
|
|
json_object_put(dbl1); |
|
|
|
json_object_put(dbl2); |
|
|
|
json_object_put(dbl3); |
|
|
|
|
|
|
|
/* array tests */ |
|
|
|
struct json_object *ar1 = json_object_new_array(); |
|
|
|
struct json_object *ar2 = json_object_new_array(); |
|
|
|
struct json_object *ar3 = json_object_new_array(); |
|
|
|
struct json_object *ar4 = json_object_new_array(); |
|
|
|
|
|
|
|
json_object_array_add(ar1, json_object_new_int(1)); |
|
|
|
json_object_array_add(ar1, json_object_new_int(2)); |
|
|
|
|
|
|
|
json_object_array_add(ar2, json_object_new_int(1)); |
|
|
|
json_object_array_add(ar2, json_object_new_int(2)); |
|
|
|
|
|
|
|
json_object_array_add(ar3, json_object_new_int(1)); |
|
|
|
json_object_array_add(ar3, json_object_new_int(1)); |
|
|
|
|
|
|
|
if (json_object_equal(ar1, ar2)) |
|
|
|
printf("Comparing equal arrays is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing equal arrays failed\n"); |
|
|
|
|
|
|
|
json_object_array_add(ar2, json_object_new_int(1)); |
|
|
|
if (!json_object_equal(ar1, ar2)) |
|
|
|
printf("Comparing arrays of different len is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing arrays of different len failed\n"); |
|
|
|
|
|
|
|
if (!json_object_equal(ar1, ar3)) |
|
|
|
printf("Comparing different arrays is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing different arrays failed\n"); |
|
|
|
|
|
|
|
if (!json_object_equal(ar1, ar4)) |
|
|
|
printf("Comparing different arrays (one empty) is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing different arrays (one empty) failed\n"); |
|
|
|
|
|
|
|
json_object_put(ar1); |
|
|
|
json_object_put(ar2); |
|
|
|
json_object_put(ar3); |
|
|
|
json_object_put(ar4); |
|
|
|
|
|
|
|
/* object tests */ |
|
|
|
struct json_object *obj1 = json_object_new_object(); |
|
|
|
struct json_object *obj2 = json_object_new_object(); |
|
|
|
|
|
|
|
json_object_object_add(obj1, "test1", json_object_new_int(123)); |
|
|
|
json_object_object_add(obj1, "test2", json_object_new_int(321)); |
|
|
|
|
|
|
|
json_object_object_add(obj2, "test2", json_object_new_int(123)); |
|
|
|
json_object_object_add(obj2, "test1", json_object_new_int(321)); |
|
|
|
|
|
|
|
/* key-order is different between obj1 and obj2, should still be equal */ |
|
|
|
if (json_object_equal(obj1, obj2)) |
|
|
|
printf("Comparing JSON object with different key order is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing JSON object with different key order is incorrect\n"); |
|
|
|
|
|
|
|
/* make obj2 look different to obj1 */ |
|
|
|
json_object_object_add(obj2, "test3", json_object_new_int(234)); |
|
|
|
if (!json_object_equal(obj1, obj2)) |
|
|
|
printf("Comparing different objects is correct\n"); |
|
|
|
else |
|
|
|
printf("Comparing different objects is incorrect\n"); |
|
|
|
|
|
|
|
json_object_put(obj1); |
|
|
|
json_object_put(obj2); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |