diff options
author | Petri Lehtinen <petri@digip.org> | 2009-09-29 21:19:55 +0300 |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2009-09-29 22:17:58 +0300 |
commit | cbacac597516b3d7309bf0811ea18cd43870bce4 (patch) | |
tree | 7cd4bbd0364d0377a964fe98470d32ea22788bd4 /test | |
parent | b3e1fe2ec5c0fb4d7307ad27fe0ac0ef14c87b37 (diff) | |
download | jansson-cbacac597516b3d7309bf0811ea18cd43870bce4.zip jansson-cbacac597516b3d7309bf0811ea18cd43870bce4.tar.gz jansson-cbacac597516b3d7309bf0811ea18cd43870bce4.tar.bz2 |
Extend array API
Added functions:
json_array_insert
json_array_insert_new
json_array_remove
json_array_clear
json_array_extend
Diffstat (limited to 'test')
-rw-r--r-- | test/testprogs/test_array.c | 242 | ||||
-rw-r--r-- | test/testprogs/util.h | 7 |
2 files changed, 243 insertions, 6 deletions
diff --git a/test/testprogs/test_array.c b/test/testprogs/test_array.c index b597afb..53f6f3d 100644 --- a/test/testprogs/test_array.c +++ b/test/testprogs/test_array.c @@ -8,7 +8,7 @@ #include <jansson.h> #include "util.h" -int main() +static void test_misc(void) { json_t *array, *five, *seven, *value; int i; @@ -19,9 +19,7 @@ int main() if(!array) fail("unable to create array"); - if(!five) - fail("unable to create integer"); - if(!seven) + if(!five || !seven) fail("unable to create integer"); if(json_array_size(array) != 0) @@ -114,6 +112,242 @@ int main() json_decref(five); json_decref(seven); json_decref(array); +} + +static void test_insert(void) +{ + json_t *array, *five, *seven, *eleven, *value; + int i; + + array = json_array(); + five = json_integer(5); + seven = json_integer(7); + eleven = json_integer(11); + + if(!array) + fail("unable to create array"); + if(!five || !seven || !eleven) + fail("unable to create integer"); + + + if(!json_array_insert(array, 1, five)) + fail("able to insert value out of bounds"); + + + if(json_array_insert(array, 0, five)) + fail("unable to insert value in an empty array"); + + if(json_array_get(array, 0) != five) + fail("json_array_insert works incorrectly"); + + if(json_array_size(array) != 1) + fail("array size is invalid after insertion"); + + + if(json_array_insert(array, 1, seven)) + fail("unable to insert value at the end of an array"); + + if(json_array_get(array, 0) != five) + fail("json_array_insert works incorrectly"); + + if(json_array_get(array, 1) != seven) + fail("json_array_insert works incorrectly"); + + if(json_array_size(array) != 2) + fail("array size is invalid after insertion"); + + + if(json_array_insert(array, 1, eleven)) + fail("unable to insert value in the middle of an array"); + + if(json_array_get(array, 0) != five) + fail("json_array_insert works incorrectly"); + + if(json_array_get(array, 1) != eleven) + fail("json_array_insert works incorrectly"); + + if(json_array_get(array, 2) != seven) + fail("json_array_insert works incorrectly"); + + if(json_array_size(array) != 3) + fail("array size is invalid after insertion"); + + + if(json_array_insert_new(array, 2, json_integer(123))) + fail("unable to insert value in the middle of an array"); + + value = json_array_get(array, 2); + if(!json_is_integer(value) || json_integer_value(value) != 123) + fail("json_array_insert_new works incorrectly"); + + if(json_array_size(array) != 4) + fail("array size is invalid after insertion"); + + + for(i = 0; i < 20; i++) { + if(json_array_insert(array, 0, seven)) + fail("unable to insert value at the begining of an array"); + } + + for(i = 0; i < 20; i++) { + if(json_array_get(array, i) != seven) + fail("json_aray_insert works incorrectly"); + } + + if(json_array_size(array) != 24) + fail("array size is invalid after loop insertion"); + + json_decref(five); + json_decref(seven); + json_decref(eleven); + json_decref(array); +} + +static void test_remove(void) +{ + json_t *array, *five, *seven; + + array = json_array(); + five = json_integer(5); + seven = json_integer(7); + + if(!array) + fail("unable to create array"); + if(!five) + fail("unable to create integer"); + if(!seven) + fail("unable to create integer"); + + + if(!json_array_remove(array, 0)) + fail("able to remove an unexisting index"); + + + if(json_array_append(array, five)) + fail("unable to append"); + + if(!json_array_remove(array, 1)) + fail("able to remove an unexisting index"); + + if(json_array_remove(array, 0)) + fail("unable to remove"); + + if(json_array_size(array) != 0) + fail("array size is invalid after removing"); + + + if(json_array_append(array, five) || + json_array_append(array, seven) || + json_array_append(array, five) || + json_array_append(array, seven)) + fail("unable to append"); + + if(json_array_remove(array, 2)) + fail("unable to remove"); + + if(json_array_size(array) != 3) + fail("array size is invalid after removing"); + + if(json_array_get(array, 0) != five || + json_array_get(array, 1) != seven || + json_array_get(array, 2) != seven) + fail("remove works incorrectly"); + + json_decref(five); + json_decref(seven); + json_decref(array); +} + +static void test_clear(void) +{ + json_t *array, *five, *seven; + int i; + + array = json_array(); + five = json_integer(5); + seven = json_integer(7); + + if(!array) + fail("unable to create array"); + if(!five || !seven) + fail("unable to create integer"); + + for(i = 0; i < 10; i++) { + if(json_array_append(array, five)) + fail("unable to append"); + } + for(i = 0; i < 10; i++) { + if(json_array_append(array, seven)) + fail("unable to append"); + } + + if(json_array_size(array) != 20) + fail("array size is invalid after appending"); + + if(json_array_clear(array)) + fail("unable to clear"); + + if(json_array_size(array) != 0) + fail("array size is invalid after clearing"); + + json_decref(five); + json_decref(seven); + json_decref(array); +} + +static void test_extend(void) +{ + json_t *array1, *array2, *five, *seven; + int i; + + array1 = json_array(); + array2 = json_array(); + five = json_integer(5); + seven = json_integer(7); + + if(!array1 || !array2) + fail("unable to create array"); + if(!five || !seven) + fail("unable to create integer"); + + for(i = 0; i < 10; i++) { + if(json_array_append(array1, five)) + fail("unable to append"); + } + for(i = 0; i < 10; i++) { + if(json_array_append(array2, seven)) + fail("unable to append"); + } + + if(json_array_size(array1) != 10 || json_array_size(array2) != 10) + fail("array size is invalid after appending"); + + if(json_array_extend(array1, array2)) + fail("unable to extend"); + + for(i = 0; i < 10; i++) { + if(json_array_get(array1, i) != five) + fail("invalid array contents after extending"); + } + for(i = 10; i < 20; i++) { + if(json_array_get(array1, i) != seven) + fail("invalid array contents after extending"); + } + + json_decref(five); + json_decref(seven); + json_decref(array1); + json_decref(array2); +} + + +int main() +{ + test_misc(); + test_insert(); + test_remove(); + test_clear(); + test_extend(); return 0; } diff --git a/test/testprogs/util.h b/test/testprogs/util.h index 6e518a2..ec8e0e4 100644 --- a/test/testprogs/util.h +++ b/test/testprogs/util.h @@ -8,10 +8,13 @@ #ifndef TESTPROGS_UTIL_H #define TESTPROGS_UTIL_H +#include <stdlib.h> + #define fail(msg) \ do { \ - fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, msg); \ - return 1; \ + fprintf(stderr, "%s:%s:%d: %s\n", \ + __FILE__, __FUNCTION__, __LINE__, msg); \ + exit(1); \ } while(0) #endif |