2 * Copyright (c) 2010 Kungliga Tekniska Högskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
6 * Portions Copyright (c) 2010 Apple Inc. All rights reserved.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
19 * 3. Neither the name of the Institute nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
41 #include "heimbasepriv.h"
44 memory_free(heim_object_t obj
)
53 ptr
= heim_alloc(10, "memory", memory_free
);
63 ptr
= heim_alloc(10, "memory", NULL
);
73 heim_number_t a1
= heim_number_create(1);
74 heim_string_t a2
= heim_string_create("hejsan");
75 heim_number_t a3
= heim_number_create(3);
76 heim_string_t a4
= heim_string_create("foosan");
78 dict
= heim_dict_create(10);
80 heim_dict_set_value(dict
, a1
, a2
);
81 heim_dict_set_value(dict
, a3
, a4
);
83 heim_dict_delete_key(dict
, a3
);
84 heim_dict_delete_key(dict
, a1
);
97 test_auto_release(void)
99 heim_auto_release_t ar1
, ar2
;
103 ar1
= heim_auto_release_create();
105 s1
= heim_string_create("hejsan");
106 heim_auto_release(s1
);
108 n1
= heim_number_create(1);
109 heim_auto_release(n1
);
111 ar2
= heim_auto_release_create();
113 n1
= heim_number_create(1);
114 heim_auto_release(n1
);
125 heim_string_t s1
, s2
;
126 const char *string
= "hejsan";
128 s1
= heim_string_create(string
);
129 s2
= heim_string_create(string
);
131 if (heim_cmp(s1
, s2
) != 0) {
132 printf("the same string is not the same\n");
148 e
= heim_error_create(10, "foo: %s", "bar");
149 heim_assert(heim_error_get_code(e
) == 10, "error_code != 10");
151 s
= heim_error_copy_string(e
);
152 heim_assert(strcmp(heim_string_get_utf8(s
), "foo: bar") == 0, "msg wrong");
164 heim_string_t k1
= heim_string_create("k1");
166 o
= heim_json_create("\"string\"", NULL
);
167 heim_assert(o
!= NULL
, "string");
168 heim_assert(heim_get_tid(o
) == heim_string_get_type_id(), "string-tid");
169 heim_assert(strcmp("string", heim_string_get_utf8(o
)) == 0, "wrong string");
172 o
= heim_json_create(" \"foo\\\"bar\" ]", NULL
);
173 heim_assert(o
!= NULL
, "string");
174 heim_assert(heim_get_tid(o
) == heim_string_get_type_id(), "string-tid");
175 heim_assert(strcmp("foo\"bar", heim_string_get_utf8(o
)) == 0, "wrong string");
178 o
= heim_json_create(" { \"key\" : \"value\" }", NULL
);
179 heim_assert(o
!= NULL
, "dict");
180 heim_assert(heim_get_tid(o
) == heim_dict_get_type_id(), "dict-tid");
183 o
= heim_json_create(" { \"k1\" : \"s1\", \"k2\" : \"s2\" }", NULL
);
184 heim_assert(o
!= NULL
, "dict");
185 heim_assert(heim_get_tid(o
) == heim_dict_get_type_id(), "dict-tid");
186 o2
= heim_dict_get_value(o
, k1
);
187 heim_assert(heim_get_tid(o2
) == heim_string_get_type_id(), "string-tid");
190 o
= heim_json_create(" { \"k1\" : { \"k2\" : \"s2\" } }", NULL
);
191 heim_assert(o
!= NULL
, "dict");
192 heim_assert(heim_get_tid(o
) == heim_dict_get_type_id(), "dict-tid");
193 o2
= heim_dict_get_value(o
, k1
);
194 heim_assert(heim_get_tid(o2
) == heim_dict_get_type_id(), "dict-tid");
197 o
= heim_json_create("{ \"k1\" : 1 }", NULL
);
198 heim_assert(o
!= NULL
, "array");
199 heim_assert(heim_get_tid(o
) == heim_dict_get_type_id(), "dict-tid");
200 o2
= heim_dict_get_value(o
, k1
);
201 heim_assert(heim_get_tid(o2
) == heim_number_get_type_id(), "number-tid");
204 o
= heim_json_create("-10", NULL
);
205 heim_assert(o
!= NULL
, "number");
206 heim_assert(heim_get_tid(o
) == heim_number_get_type_id(), "number-tid");
209 o
= heim_json_create("99", NULL
);
210 heim_assert(o
!= NULL
, "number");
211 heim_assert(heim_get_tid(o
) == heim_number_get_type_id(), "number-tid");
214 o
= heim_json_create(" [ 1 ]", NULL
);
215 heim_assert(o
!= NULL
, "array");
216 heim_assert(heim_get_tid(o
) == heim_array_get_type_id(), "array-tid");
219 o
= heim_json_create(" [ -1 ]", NULL
);
220 heim_assert(o
!= NULL
, "array");
221 heim_assert(heim_get_tid(o
) == heim_array_get_type_id(), "array-tid");
231 main(int argc
, char **argv
)
235 res
|= test_memory();
237 res
|= test_auto_release();
238 res
|= test_string();