1 #include <stddef.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 6 #include "json.h" 7 8 int main(int argc, char **argv) 9 { 10 MC_SET_DEBUG(1); 11 12 /* 13 * Check that replacing an existing object keeps the key valid, 14 * and that it keeps the order the same. 15 */ 16 json_object *my_object = json_object_new_object(); 17 json_object_object_add(my_object, "foo1", json_object_new_string("bar1")); 18 json_object_object_add(my_object, "foo2", json_object_new_string("bar2")); 19 json_object_object_add(my_object, "deleteme", json_object_new_string("bar2")); 20 json_object_object_add(my_object, "foo3", json_object_new_string("bar3")); 21 22 printf("==== delete-in-loop test starting ====\n"); 23 24 int orig_count = 0; 25 json_object_object_foreach(my_object, key0, val0) 26 { 27 printf("Key at index %d is [%s] %d", orig_count, key0, (val0 == NULL)); 28 if (strcmp(key0, "deleteme") == 0) 29 { 30 json_object_object_del(my_object, key0); 31 printf(" (deleted)\n"); 32 } 33 else 34 printf(" (kept)\n"); 35 orig_count++; 36 } 37 38 printf("==== replace-value first loop starting ====\n"); 39 40 const char *original_key = NULL; 41 orig_count = 0; 42 json_object_object_foreach(my_object, key, val) 43 { 44 printf("Key at index %d is [%s] %d\n", orig_count, key, (val == NULL)); 45 orig_count++; 46 if (strcmp(key, "foo2") != 0) 47 continue; 48 printf("replacing value for key [%s]\n", key); 49 original_key = key; 50 json_object_object_add(my_object, key, json_object_new_string("zzz")); 51 } 52 53 printf("==== second loop starting ====\n"); 54 55 int new_count = 0; 56 int retval = 0; 57 json_object_object_foreach(my_object, key2, val2) 58 { 59 printf("Key at index %d is [%s] %d\n", new_count, key2, (val2 == NULL)); 60 new_count++; 61 if (strcmp(key2, "foo2") != 0) 62 continue; 63 printf("pointer for key [%s] does %smatch\n", key2, 64 (key2 == original_key) ? "" : "NOT "); 65 if (key2 != original_key) 66 retval = 1; 67 } 68 if (new_count != orig_count) 69 { 70 printf("mismatch between original count (%d) and new count (%d)\n", orig_count, 71 new_count); 72 retval = 1; 73 } 74 75 json_object_put(my_object); 76 77 return retval; 78 } 79
This page was automatically generated by LXR 0.3.1. • OpenWrt