00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifdef HAVE_CONFIG_H
00021 # include <config.h>
00022 #endif
00023
00024
00025
00026
00027
00028 #include <cpl.h>
00029
00030 #include <visir_utils.h>
00031
00032
00036
00037
00038 #define CONCAT(a,b) a ## _ ## b
00039 #define CONCAT2X(a,b) CONCAT(a,b)
00040
00041
00045
00046
00047 int main(void)
00048 {
00049
00050 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
00051 FILE * stream;
00052
00053 stream = cpl_msg_get_level() > CPL_MSG_INFO
00054 ? fopen("/dev/null", "a") : stdout;
00055
00056 {
00057 visir_imglist * l = visir_imglist_new(10, NULL);
00058 cpl_propertylist * mplist = cpl_propertylist_new();
00059 cpl_test(l != NULL);
00060 cpl_test(visir_imglist_get_mplist(l) == NULL);
00061 cpl_test(visir_imglist_get_data(l ,9) == NULL);
00062 cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
00063 cpl_test_leq(10, l->_capacity);
00064 cpl_test_eq(0, visir_imglist_get_size(l));
00065 visir_imglist_delete(l, NULL);
00066 cpl_test_error(CPL_ERROR_NONE);
00067
00068 l = visir_imglist_new(10, mplist);
00069 cpl_test(visir_imglist_get_mplist(l) == mplist);
00070 visir_imglist_set_mplist(l, NULL);
00071 visir_imglist_delete(l, NULL);
00072 cpl_test_error(CPL_ERROR_NONE);
00073
00074 l = visir_imglist_new(0, mplist);
00075 cpl_test(visir_imglist_get_mplist(l) == mplist);
00076 cpl_test_lt(0, l->_capacity);
00077 cpl_test_noneq_ptr(l->auxdata, (void*)NULL);
00078 cpl_test_noneq_ptr(l->imgs, (void*)NULL);
00079 visir_imglist_delete(l, cpl_free);
00080 cpl_test_error(CPL_ERROR_NONE);
00081 cpl_propertylist_delete(mplist);
00082
00083 visir_imglist_delete(NULL, NULL);
00084 visir_imglist_delete(NULL, cpl_free);
00085 visir_imglist_unwrap(NULL, NULL);
00086 cpl_test_error(CPL_ERROR_NONE);
00087 }
00088
00089 {
00090 visir_imglist * l = visir_imglist_new(1, NULL);
00091 const int N = 10;
00092 cpl_image * imgs[N];
00093 cpl_propertylist * plists[N];
00094 for (int i = 0; i < N; i++) {
00095 imgs[i] = cpl_image_new(3, 3, CPL_TYPE_INT);
00096 plists[i] = cpl_propertylist_new();
00097 }
00098 cpl_propertylist_delete(plists[3]);
00099 plists[3] = NULL;
00100
00101 for (cpl_size i = 0; i < N; i++) {
00102 visir_imglist_append(l, imgs[i], plists[i]);
00103 cpl_test_image_abs(visir_imglist_get_img(l, i), imgs[i], 0);
00104 cpl_test_eq_ptr(visir_imglist_get_data(l, i), plists[i]);
00105 }
00106 cpl_test_eq(N, visir_imglist_get_size(l));
00107 cpl_test_leq(visir_imglist_get_size(l), l->_capacity);
00108
00109 for (cpl_size i = 0; i < N; i++) {
00110 cpl_propertylist * p;
00111 cpl_image * img;
00112 visir_imglist_get(l, i, &img, (void**)&p);
00113 cpl_test_eq_ptr(img, imgs[i]);
00114 cpl_test_eq_ptr(p, plists[i]);
00115 visir_imglist_get(l, i, &img, NULL);
00116 cpl_test_eq_ptr(img, imgs[i]);
00117 visir_imglist_get(l, i, NULL, (void**)&p);
00118 cpl_test_eq_ptr(p, plists[i]);
00119 visir_imglist_get(l, i, NULL, NULL);
00120 }
00121
00122 cpl_test(visir_imglist_get_img(l, -1) == NULL);
00123 cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
00124 cpl_test(visir_imglist_get_img(l, N + 1) == NULL);
00125 cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
00126 cpl_test(visir_imglist_get_data(l, -1) == NULL);
00127 cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
00128 cpl_test(visir_imglist_get_data(l, N + 1) == NULL);
00129 cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
00130
00131 visir_imglist_delete(l, (visir_free)cpl_propertylist_delete);
00132 }
00133
00134 {
00135 visir_imglist * l = visir_imglist_new(1, NULL);
00136 const int N = 10;
00137 cpl_image * imgs[N];
00138 cpl_propertylist * plists[N];
00139 for (int i = 0; i < N; i++) {
00140 imgs[i] = cpl_image_new(3, 3, CPL_TYPE_INT);
00141 plists[i] = cpl_propertylist_new();
00142 }
00143 cpl_propertylist_delete(plists[3]);
00144 plists[3] = NULL;
00145
00146 for (cpl_size i = 0; i < N; i++) {
00147 visir_imglist_append(l, imgs[i], plists[i]);
00148 cpl_test_image_abs(visir_imglist_get_img(l, i), imgs[i], 0);
00149 cpl_test_eq_ptr(visir_imglist_get_data(l, i), plists[i]);
00150 }
00151
00152 visir_imglist_unwrap(l, (visir_free)cpl_propertylist_delete);
00153 for (cpl_size i = 0; i < N; i++)
00154 cpl_image_delete(imgs[i]);
00155 }
00156
00157 {
00158 visir_imglist * l = visir_imglist_new(1, NULL);
00159 const int N = 10;
00160 void * data = cpl_malloc(4);
00161 void * data2 = cpl_malloc(4);
00162 cpl_imagelist * imgs = cpl_imagelist_new();
00163 for (int i = 0; i < N; i++)
00164 cpl_imagelist_set(imgs, cpl_image_new(3, 3, CPL_TYPE_INT), i);
00165
00166 visir_imglist_append_imglist(l, imgs, NULL);
00167 cpl_test_error(CPL_ERROR_NONE);
00168
00169 visir_imglist_set_data(l, 3, data);
00170 visir_imglist_set_data(l, 4, data2);
00171 cpl_test_error(CPL_ERROR_NONE);
00172
00173 cpl_test_eq(N, visir_imglist_get_size(l));
00174 cpl_test_leq(visir_imglist_get_size(l), l->_capacity);
00175
00176 for (cpl_size i = 0; i < visir_imglist_get_size(l); i++) {
00177 cpl_test_image_abs(visir_imglist_get_img(l, i),
00178 cpl_imagelist_get(imgs, i), 0);
00179 }
00180
00181 cpl_test_eq_ptr(visir_imglist_get_data(l, 3), data);
00182 cpl_test_eq_ptr(visir_imglist_get_data(l, 4), data2);
00183 cpl_imagelist_delete(imgs);
00184 visir_imglist * nl = visir_imglist_new(1, visir_imglist_get_mplist(l));
00185 for (cpl_size i = 0; i < visir_imglist_get_size(l); i++) {
00186 visir_imglist_append(nl, visir_imglist_get_img(l, i),
00187 visir_imglist_get_data(l, i));
00188 }
00189 cpl_test_eq(visir_imglist_get_size(l), visir_imglist_get_size(nl));
00190 visir_imglist_unwrap(l, NULL);
00191 visir_imglist_delete(nl, cpl_free);
00192 }
00193
00194 if (stream != stdout) cpl_test_zero( fclose(stream) );
00195 return cpl_test_end(0);
00196 }