VISIR Pipeline Reference Manual  4.1.0
visir_imglist-test.c
1 /* *
2  * This file is part of the ESO VISIR package *
3  * Copyright (C) 2004,2005 European Southern Observatory *
4  * *
5  * This library is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the Free Software *
17  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02111-1307 USA *
18  * */
19 
20 #ifdef HAVE_CONFIG_H
21 # include <config.h>
22 #endif
23 
24 /*-----------------------------------------------------------------------------
25  Includes
26  -----------------------------------------------------------------------------*/
27 
28 #include <cpl.h>
29 
30 #include <visir_utils.h>
31 
32 /*----------------------------------------------------------------------------*/
36 /*----------------------------------------------------------------------------*/
37 
38 #define CONCAT(a,b) a ## _ ## b
39 #define CONCAT2X(a,b) CONCAT(a,b)
40 
41 /*----------------------------------------------------------------------------*/
45 /*----------------------------------------------------------------------------*/
46 
47 int main(void)
48 {
49 
50  cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
51  FILE * stream;
52 
53  stream = cpl_msg_get_level() > CPL_MSG_INFO
54  ? fopen("/dev/null", "a") : stdout;
55 
56  {
57  visir_imglist * l = visir_imglist_new(10, NULL);
58  cpl_propertylist * mplist = cpl_propertylist_new();
59  cpl_test(l != NULL);
60  cpl_test(visir_imglist_get_mplist(l) == NULL);
61  cpl_test(visir_imglist_get_data(l ,9) == NULL);
62  cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
63  cpl_test_leq(10, l->_capacity);
64  cpl_test_eq(0, visir_imglist_get_size(l));
65  visir_imglist_delete(l, NULL);
66  cpl_test_error(CPL_ERROR_NONE);
67 
68  l = visir_imglist_new(10, mplist);
69  cpl_test(visir_imglist_get_mplist(l) == mplist);
70  visir_imglist_set_mplist(l, NULL);
71  visir_imglist_delete(l, NULL);
72  cpl_test_error(CPL_ERROR_NONE);
73 
74  l = visir_imglist_new(0, mplist);
75  cpl_test(visir_imglist_get_mplist(l) == mplist);
76  cpl_test_lt(0, l->_capacity);
77  cpl_test_noneq_ptr(l->auxdata, (void*)NULL);
78  cpl_test_noneq_ptr(l->imgs, (void*)NULL);
79  visir_imglist_delete(l, cpl_free);
80  cpl_test_error(CPL_ERROR_NONE);
81  cpl_propertylist_delete(mplist);
82 
83  visir_imglist_delete(NULL, NULL);
84  visir_imglist_delete(NULL, cpl_free);
85  visir_imglist_unwrap(NULL, NULL);
86  cpl_test_error(CPL_ERROR_NONE);
87  }
88 
89  {
90  visir_imglist * l = visir_imglist_new(1, NULL);
91  const int N = 10;
92  cpl_image * imgs[N];
93  cpl_propertylist * plists[N];
94  for (int i = 0; i < N; i++) {
95  imgs[i] = cpl_image_new(3, 3, CPL_TYPE_INT);
96  plists[i] = cpl_propertylist_new();
97  }
98  cpl_propertylist_delete(plists[3]);
99  plists[3] = NULL;
100 
101  for (cpl_size i = 0; i < N; i++) {
102  visir_imglist_append(l, imgs[i], plists[i]);
103  cpl_test_image_abs(visir_imglist_get_img(l, i), imgs[i], 0);
104  cpl_test_eq_ptr(visir_imglist_get_data(l, i), plists[i]);
105  }
106  cpl_test_eq(N, visir_imglist_get_size(l));
107  cpl_test_leq(visir_imglist_get_size(l), l->_capacity);
108 
109  for (cpl_size i = 0; i < N; i++) {
110  cpl_propertylist * p;
111  cpl_image * img;
112  visir_imglist_get(l, i, &img, (void**)&p);
113  cpl_test_eq_ptr(img, imgs[i]);
114  cpl_test_eq_ptr(p, plists[i]);
115  visir_imglist_get(l, i, &img, NULL);
116  cpl_test_eq_ptr(img, imgs[i]);
117  visir_imglist_get(l, i, NULL, (void**)&p);
118  cpl_test_eq_ptr(p, plists[i]);
119  visir_imglist_get(l, i, NULL, NULL);
120  }
121 
122  cpl_test(visir_imglist_get_img(l, -1) == NULL);
123  cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
124  cpl_test(visir_imglist_get_img(l, N + 1) == NULL);
125  cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
126  cpl_test(visir_imglist_get_data(l, -1) == NULL);
127  cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
128  cpl_test(visir_imglist_get_data(l, N + 1) == NULL);
129  cpl_test_error(CPL_ERROR_ACCESS_OUT_OF_RANGE);
130 
131  visir_imglist_delete(l, (visir_free)cpl_propertylist_delete);
132  }
133 
134  {
135  visir_imglist * l = visir_imglist_new(1, NULL);
136  const int N = 10;
137  cpl_image * imgs[N];
138  cpl_propertylist * plists[N];
139  for (int i = 0; i < N; i++) {
140  imgs[i] = cpl_image_new(3, 3, CPL_TYPE_INT);
141  plists[i] = cpl_propertylist_new();
142  }
143  cpl_propertylist_delete(plists[3]);
144  plists[3] = NULL;
145 
146  for (cpl_size i = 0; i < N; i++) {
147  visir_imglist_append(l, imgs[i], plists[i]);
148  cpl_test_image_abs(visir_imglist_get_img(l, i), imgs[i], 0);
149  cpl_test_eq_ptr(visir_imglist_get_data(l, i), plists[i]);
150  }
151 
152  visir_imglist_unwrap(l, (visir_free)cpl_propertylist_delete);
153  for (cpl_size i = 0; i < N; i++)
154  cpl_image_delete(imgs[i]);
155  }
156 
157  {
158  visir_imglist * l = visir_imglist_new(1, NULL);
159  const int N = 10;
160  void * data = cpl_malloc(4);
161  void * data2 = cpl_malloc(4);
162  cpl_imagelist * imgs = cpl_imagelist_new();
163  for (int i = 0; i < N; i++)
164  cpl_imagelist_set(imgs, cpl_image_new(3, 3, CPL_TYPE_INT), i);
165 
166  visir_imglist_append_imglist(l, imgs, NULL);
167  cpl_test_error(CPL_ERROR_NONE);
168 
169  visir_imglist_set_data(l, 3, data);
170  visir_imglist_set_data(l, 4, data2);
171  cpl_test_error(CPL_ERROR_NONE);
172 
173  cpl_test_eq(N, visir_imglist_get_size(l));
174  cpl_test_leq(visir_imglist_get_size(l), l->_capacity);
175 
176  for (cpl_size i = 0; i < visir_imglist_get_size(l); i++) {
177  cpl_test_image_abs(visir_imglist_get_img(l, i),
178  cpl_imagelist_get(imgs, i), 0);
179  }
180 
181  cpl_test_eq_ptr(visir_imglist_get_data(l, 3), data);
182  cpl_test_eq_ptr(visir_imglist_get_data(l, 4), data2);
183  cpl_imagelist_delete(imgs);
184  visir_imglist * nl = visir_imglist_new(1, visir_imglist_get_mplist(l));
185  for (cpl_size i = 0; i < visir_imglist_get_size(l); i++) {
186  visir_imglist_append(nl, visir_imglist_get_img(l, i),
187  visir_imglist_get_data(l, i));
188  }
189  cpl_test_eq(visir_imglist_get_size(l), visir_imglist_get_size(nl));
190  visir_imglist_unwrap(l, NULL);
191  visir_imglist_delete(nl, cpl_free);
192  }
193 
194  if (stream != stdout) cpl_test_zero( fclose(stream) );
195  return cpl_test_end(0);
196 }
int main(void)
Find a plugin and submit it to some tests.
Definition: recipe_main.c:61