97a8513eadb9dc2a145ad181cafb7f73c4f4ce38
[jansson.git] / test / testprogs / test_array.c
1 /*
2  * Copyright (c) 2009 Petri Lehtinen <petri@digip.org>
3  *
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.
6  */
7
8 #include <jansson.h>
9 #include "util.h"
10
11 int main()
12 {
13     json_t *array, *five, *seven, *value;
14     int i;
15
16     array = json_array();
17     five = json_integer(5);
18     seven = json_integer(7);
19
20     if(!array)
21         fail("unable to create array");
22     if(!five)
23         fail("unable to create integer");
24     if(!seven)
25         fail("unable to create integer");
26
27     if(json_array_size(array) != 0)
28         fail("empty array has nonzero size");
29
30     if(json_array_append(array, five))
31         fail("unable to append");
32
33     if(json_array_size(array) != 1)
34         fail("wrong array size");
35
36     value = json_array_get(array, 0);
37     if(!value)
38         fail("unable to get item");
39     if(value != five)
40         fail("got wrong value");
41
42     if(json_array_append(array, seven))
43         fail("unable to append value");
44
45     if(json_array_size(array) != 2)
46         fail("wrong array size");
47
48     value = json_array_get(array, 1);
49     if(!value)
50         fail("unable to get item");
51     if(value != seven)
52         fail("got wrong value");
53
54     if(json_array_set(array, 0, seven))
55         fail("unable to set value");
56
57     if(json_array_size(array) != 2)
58         fail("wrong array size");
59
60     value = json_array_get(array, 0);
61     if(!value)
62         fail("unable to get item");
63     if(value != seven)
64         fail("got wrong value");
65
66     if(json_array_get(array, 2) != NULL)
67         fail("able to get value out of bounds");
68
69     if(!json_array_set(array, 2, seven))
70         fail("able to set value out of bounds");
71
72     for(i = 2; i < 30; i++) {
73         if(json_array_append(array, seven))
74             fail("unable to append value");
75
76         if(json_array_size(array) != i + 1)
77             fail("wrong array size");
78     }
79
80     for(i = 0; i < 30; i++) {
81         value = json_array_get(array, i);
82         if(!value)
83             fail("unable to get item");
84         if(value != seven)
85             fail("got wrong value");
86     }
87
88     json_array_set_new(array, 15, json_integer(123));
89     value = json_array_get(array, 15);
90     if(!json_is_integer(value) || json_integer_value(value) != 123)
91       fail("json_array_set_new works incorrectly");
92
93     json_array_append_new(array, json_integer(321));
94     value = json_array_get(array, json_array_size(array) - 1);
95     if(!json_is_integer(value) || json_integer_value(value) != 321)
96       fail("json_array_append_new works incorrectly");
97
98     json_decref(five);
99     json_decref(seven);
100     json_decref(array);
101
102     return 0;
103 }