2 * Copyright (c) 2009-2012 Petri Lehtinen <petri@digip.org>
4 * Jansson is free software; you can redistribute it and/or modify
5 * it under the terms of the MIT license. See LICENSE for details.
12 /* Call the simple functions not covered by other tests of the public API */
13 static void run_tests()
17 value = json_boolean(1);
18 if(!json_is_true(value))
19 fail("json_boolean(1) failed");
22 value = json_boolean(-123);
23 if(!json_is_true(value))
24 fail("json_boolean(-123) failed");
27 value = json_boolean(0);
28 if(!json_is_false(value))
29 fail("json_boolean(0) failed");
33 value = json_integer(1);
34 if(json_typeof(value) != JSON_INTEGER)
35 fail("json_typeof failed");
37 if(json_is_object(value))
38 fail("json_is_object failed");
40 if(json_is_array(value))
41 fail("json_is_array failed");
43 if(json_is_string(value))
44 fail("json_is_string failed");
46 if(!json_is_integer(value))
47 fail("json_is_integer failed");
49 if(json_is_real(value))
50 fail("json_is_real failed");
52 if(!json_is_number(value))
53 fail("json_is_number failed");
55 if(json_is_true(value))
56 fail("json_is_true failed");
58 if(json_is_false(value))
59 fail("json_is_false failed");
61 if(json_is_boolean(value))
62 fail("json_is_boolean failed");
64 if(json_is_null(value))
65 fail("json_is_null failed");
70 value = json_string("foo");
72 fail("json_string failed");
73 if(strcmp(json_string_value(value), "foo"))
74 fail("invalid string value");
76 if(json_string_set(value, "bar"))
77 fail("json_string_set failed");
78 if(strcmp(json_string_value(value), "bar"))
79 fail("invalid string value");
83 value = json_string(NULL);
85 fail("json_string(NULL) failed");
88 value = json_string("a\xefz");
90 fail("json_string(<invalid utf-8>) failed");
92 value = json_string_nocheck("foo");
94 fail("json_string_nocheck failed");
95 if(strcmp(json_string_value(value), "foo"))
96 fail("invalid string value");
98 if(json_string_set_nocheck(value, "bar"))
99 fail("json_string_set_nocheck failed");
100 if(strcmp(json_string_value(value), "bar"))
101 fail("invalid string value");
106 value = json_string_nocheck("qu\xff");
108 fail("json_string_nocheck failed");
109 if(strcmp(json_string_value(value), "qu\xff"))
110 fail("invalid string value");
112 if(json_string_set_nocheck(value, "\xfd\xfe\xff"))
113 fail("json_string_set_nocheck failed");
114 if(strcmp(json_string_value(value), "\xfd\xfe\xff"))
115 fail("invalid string value");
120 value = json_integer(123);
122 fail("json_integer failed");
123 if(json_integer_value(value) != 123)
124 fail("invalid integer value");
125 if(json_number_value(value) != 123.0)
126 fail("invalid number value");
128 if(json_integer_set(value, 321))
129 fail("json_integer_set failed");
130 if(json_integer_value(value) != 321)
131 fail("invalid integer value");
132 if(json_number_value(value) != 321.0)
133 fail("invalid number value");
137 value = json_real(123.123);
139 fail("json_real failed");
140 if(json_real_value(value) != 123.123)
141 fail("invalid integer value");
142 if(json_number_value(value) != 123.123)
143 fail("invalid number value");
145 if(json_real_set(value, 321.321))
146 fail("json_real_set failed");
147 if(json_real_value(value) != 321.321)
148 fail("invalid real value");
149 if(json_number_value(value) != 321.321)
150 fail("invalid number value");
156 fail("json_true failed");
159 value = json_false();
161 fail("json_false failed");
166 fail("json_null failed");
169 /* Test reference counting on singletons (true, false, null) */
171 if(value->refcount != (size_t)-1)
172 fail("refcounting true works incorrectly");
174 if(value->refcount != (size_t)-1)
175 fail("refcounting true works incorrectly");
177 if(value->refcount != (size_t)-1)
178 fail("refcounting true works incorrectly");
180 value = json_false();
181 if(value->refcount != (size_t)-1)
182 fail("refcounting false works incorrectly");
184 if(value->refcount != (size_t)-1)
185 fail("refcounting false works incorrectly");
187 if(value->refcount != (size_t)-1)
188 fail("refcounting false works incorrectly");
191 if(value->refcount != (size_t)-1)
192 fail("refcounting null works incorrectly");
194 if(value->refcount != (size_t)-1)
195 fail("refcounting null works incorrectly");
197 if(value->refcount != (size_t)-1)
198 fail("refcounting null works incorrectly");