Imported Upstream version 0.10
[platform/upstream/json-c.git] / tests / test1.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stddef.h>
4 #include <string.h>
5 #include <assert.h>
6
7 #include "json.h"
8 #include "parse_flags.h"
9
10 static int sort_fn (const void *j1, const void *j2)
11 {
12   json_object * const *jso1, * const *jso2;
13   int i1, i2;
14
15   jso1 = j1;
16   jso2 = j2;
17   if (!*jso1 && !*jso2) {
18     return 0;
19   }
20   if (!*jso1) {
21     return -1;
22   }
23   if (!*jso2) {
24     return 1;
25   }
26
27   i1 = json_object_get_int(*jso1);
28   i2 = json_object_get_int(*jso2);
29
30   return i1 - i2;
31 }
32
33 #ifdef TEST_FORMATTED
34 #define json_object_to_json_string(obj) json_object_to_json_string_ext(obj,sflags)
35 #else
36 /* no special define */
37 #endif
38
39 int main(int argc, char **argv)
40 {
41   json_object *my_string, *my_int, *my_object, *my_array;
42   int i;
43 #ifdef TEST_FORMATTED
44         int sflags = 0;
45 #endif
46
47   MC_SET_DEBUG(1);
48
49 #ifdef TEST_FORMATTED
50         sflags = parse_flags(argc, argv);
51 #endif
52
53   my_string = json_object_new_string("\t");
54   printf("my_string=%s\n", json_object_get_string(my_string));
55   printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
56   json_object_put(my_string);
57
58   my_string = json_object_new_string("\\");
59   printf("my_string=%s\n", json_object_get_string(my_string));
60   printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
61   json_object_put(my_string);
62
63   my_string = json_object_new_string("foo");
64   printf("my_string=%s\n", json_object_get_string(my_string));
65   printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
66
67   my_int = json_object_new_int(9);
68   printf("my_int=%d\n", json_object_get_int(my_int));
69   printf("my_int.to_string()=%s\n", json_object_to_json_string(my_int));
70
71   my_array = json_object_new_array();
72   json_object_array_add(my_array, json_object_new_int(1));
73   json_object_array_add(my_array, json_object_new_int(2));
74   json_object_array_add(my_array, json_object_new_int(3));
75   json_object_array_put_idx(my_array, 4, json_object_new_int(5));
76   printf("my_array=\n");
77   for(i=0; i < json_object_array_length(my_array); i++) {
78     json_object *obj = json_object_array_get_idx(my_array, i);
79     printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
80   }
81   printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
82
83   json_object_put(my_array);
84
85   my_array = json_object_new_array();
86   json_object_array_add(my_array, json_object_new_int(3));
87   json_object_array_add(my_array, json_object_new_int(1));
88   json_object_array_add(my_array, json_object_new_int(2));
89   json_object_array_put_idx(my_array, 4, json_object_new_int(0));
90   printf("my_array=\n");
91   for(i=0; i < json_object_array_length(my_array); i++) {
92     json_object *obj = json_object_array_get_idx(my_array, i);
93     printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
94   }
95   printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
96   json_object_array_sort(my_array, sort_fn);
97   printf("my_array=\n");
98   for(i=0; i < json_object_array_length(my_array); i++) {
99     json_object *obj = json_object_array_get_idx(my_array, i);
100     printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
101   }
102   printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
103
104   my_object = json_object_new_object();
105   json_object_object_add(my_object, "abc", json_object_new_int(12));
106   json_object_object_add(my_object, "foo", json_object_new_string("bar"));
107   json_object_object_add(my_object, "bool0", json_object_new_boolean(0));
108   json_object_object_add(my_object, "bool1", json_object_new_boolean(1));
109   json_object_object_add(my_object, "baz", json_object_new_string("bang"));
110   json_object_object_add(my_object, "baz", json_object_new_string("fark"));
111   json_object_object_del(my_object, "baz");
112   /*json_object_object_add(my_object, "arr", my_array);*/
113   printf("my_object=\n");
114   json_object_object_foreach(my_object, key, val) {
115     printf("\t%s: %s\n", key, json_object_to_json_string(val));
116   }
117   printf("my_object.to_string()=%s\n", json_object_to_json_string(my_object));
118
119   json_object_put(my_string);
120   json_object_put(my_int);
121   json_object_put(my_object);
122   json_object_put(my_array);
123
124   return 0;
125 }