29 #include "irplib_sdp_spectrum.h"
36 static int test_get_set_functions(
void);
37 static int test_copy_functions(
void);
38 static int test_count_functions(
void);
39 static int test_column_functions(
void);
40 static int test_equal_function(
void);
41 static int test_io_functions(
void);
42 static int test_column_copy_update_functions(
void);
43 static int test_generic_copy_functions(
void);
44 static int test_append_provenance(
void);
46 static cpl_boolean create_file_with_key(cpl_frameset* frames,
56 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
58 cpl_test_assert(test_get_set_functions() == EXIT_SUCCESS);
59 cpl_test_assert(test_copy_functions() == EXIT_SUCCESS);
60 cpl_test_assert(test_count_functions() == EXIT_SUCCESS);
61 cpl_test_assert(test_column_functions() == EXIT_SUCCESS);
62 cpl_test_assert(test_equal_function() == EXIT_SUCCESS);
63 cpl_test_assert(test_io_functions() == EXIT_SUCCESS);
64 cpl_test_assert(test_column_copy_update_functions() == EXIT_SUCCESS);
65 cpl_test_assert(test_generic_copy_functions() == EXIT_SUCCESS);
66 cpl_test_assert(test_append_provenance() == EXIT_SUCCESS);
68 return cpl_test_end(0);
74 cpl_test_eq_error(irplib_sdp_spectrum_set_ra(a, 1.23), CPL_ERROR_NONE);
75 cpl_test_eq_error(irplib_sdp_spectrum_set_dec(a, 2.34), CPL_ERROR_NONE);
76 cpl_test_eq_error(irplib_sdp_spectrum_set_exptime(a, 3.45), CPL_ERROR_NONE);
77 cpl_test_eq_error(irplib_sdp_spectrum_set_texptime(a, 5.34), CPL_ERROR_NONE);
78 cpl_test_eq_error(irplib_sdp_spectrum_set_timesys(a,
"gmt"), CPL_ERROR_NONE);
79 cpl_test_eq_error(irplib_sdp_spectrum_set_mjdobs(a, 4.56), CPL_ERROR_NONE);
80 cpl_test_eq_error(irplib_sdp_spectrum_set_mjdend(a, 5.67), CPL_ERROR_NONE);
81 cpl_test_eq_error(irplib_sdp_spectrum_set_prodlvl(a, 678), CPL_ERROR_NONE);
82 cpl_test_eq_error(irplib_sdp_spectrum_set_procsoft(a,
"abc"), CPL_ERROR_NONE);
83 cpl_test_eq_error(irplib_sdp_spectrum_set_prodcatg(a,
"bcd"), CPL_ERROR_NONE);
84 cpl_test_eq_error(irplib_sdp_spectrum_set_origin(a,
"cde"), CPL_ERROR_NONE);
85 cpl_test_eq_error(irplib_sdp_spectrum_set_extobj(a, CPL_TRUE), CPL_ERROR_NONE);
86 cpl_test_eq_error(irplib_sdp_spectrum_set_dispelem(a,
"def"), CPL_ERROR_NONE);
87 cpl_test_eq_error(irplib_sdp_spectrum_set_specsys(a,
"efg"), CPL_ERROR_NONE);
88 cpl_test_eq_error(irplib_sdp_spectrum_set_progid(a,
"fgh"), CPL_ERROR_NONE);
89 cpl_test_eq_error(irplib_sdp_spectrum_set_obid(a, 1, 789), CPL_ERROR_NONE);
90 cpl_test_eq_error(irplib_sdp_spectrum_set_mepoch(a, CPL_TRUE), CPL_ERROR_NONE);
91 cpl_test_eq_error(irplib_sdp_spectrum_set_obstech(a,
"ghi"), CPL_ERROR_NONE);
92 cpl_test_eq_error(irplib_sdp_spectrum_set_fluxcal(a,
"hij"), CPL_ERROR_NONE);
93 cpl_test_eq_error(irplib_sdp_spectrum_set_contnorm(a, CPL_TRUE), CPL_ERROR_NONE);
94 cpl_test_eq_error(irplib_sdp_spectrum_set_wavelmin(a, 8.90), CPL_ERROR_NONE);
95 cpl_test_eq_error(irplib_sdp_spectrum_set_wavelmax(a, 9.01), CPL_ERROR_NONE);
96 cpl_test_eq_error(irplib_sdp_spectrum_set_specbin(a, 10.12), CPL_ERROR_NONE);
97 cpl_test_eq_error(irplib_sdp_spectrum_set_totflux(a, CPL_TRUE), CPL_ERROR_NONE);
98 cpl_test_eq_error(irplib_sdp_spectrum_set_fluxerr(a, 432.19), CPL_ERROR_NONE);
99 cpl_test_eq_error(irplib_sdp_spectrum_set_referenc(a,
"ijk"), CPL_ERROR_NONE);
100 cpl_test_eq_error(irplib_sdp_spectrum_set_specres(a, 23.45), CPL_ERROR_NONE);
101 cpl_test_eq_error(irplib_sdp_spectrum_set_specerr(a, 34.56), CPL_ERROR_NONE);
102 cpl_test_eq_error(irplib_sdp_spectrum_set_specsye(a, 45.67), CPL_ERROR_NONE);
103 cpl_test_eq_error(irplib_sdp_spectrum_set_lamnlin(a, 5678), CPL_ERROR_NONE);
104 cpl_test_eq_error(irplib_sdp_spectrum_set_lamrms(a, 67.89), CPL_ERROR_NONE);
105 cpl_test_eq_error(irplib_sdp_spectrum_set_gain(a, 78.90), CPL_ERROR_NONE);
106 cpl_test_eq_error(irplib_sdp_spectrum_set_detron(a, 89.01), CPL_ERROR_NONE);
107 cpl_test_eq_error(irplib_sdp_spectrum_set_effron(a, 90.12), CPL_ERROR_NONE);
108 cpl_test_eq_error(irplib_sdp_spectrum_set_snr(a, 93.75), CPL_ERROR_NONE);
109 cpl_test_eq_error(irplib_sdp_spectrum_set_ncombine(a, 12345), CPL_ERROR_NONE);
110 cpl_test_eq_error(irplib_sdp_spectrum_set_voclass(a,
"jkl"), CPL_ERROR_NONE);
111 cpl_test_eq_error(irplib_sdp_spectrum_set_vopub(a,
"klm"), CPL_ERROR_NONE);
112 cpl_test_eq_error(irplib_sdp_spectrum_set_title(a,
"lmn"), CPL_ERROR_NONE);
113 cpl_test_eq_error(irplib_sdp_spectrum_set_object(a,
"mno"), CPL_ERROR_NONE);
114 cpl_test_eq_error(irplib_sdp_spectrum_set_aperture(a, 234.56), CPL_ERROR_NONE);
115 cpl_test_eq_error(irplib_sdp_spectrum_set_telapse(a, 345.67), CPL_ERROR_NONE);
116 cpl_test_eq_error(irplib_sdp_spectrum_set_tmid(a, 456.78), CPL_ERROR_NONE);
117 cpl_test_eq_error(irplib_sdp_spectrum_set_specval(a, 567.89), CPL_ERROR_NONE);
118 cpl_test_eq_error(irplib_sdp_spectrum_set_specbw(a, 678.90), CPL_ERROR_NONE);
119 cpl_test_eq_error(irplib_sdp_spectrum_set_extname(a,
"nop"), CPL_ERROR_NONE);
120 cpl_test_eq_error(irplib_sdp_spectrum_set_inherit(a, CPL_TRUE), CPL_ERROR_NONE);
121 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 78901), CPL_ERROR_NONE);
122 cpl_test_eq_error(irplib_sdp_spectrum_set_tdmin(a, 890.12), CPL_ERROR_NONE);
123 cpl_test_eq_error(irplib_sdp_spectrum_set_tdmax(a, 901.23), CPL_ERROR_NONE);
124 cpl_test_eq_error(irplib_sdp_spectrum_set_prov(a, 1,
"opq"), CPL_ERROR_NONE);
125 cpl_test_eq_error(irplib_sdp_spectrum_set_prov(a, 2,
"pqr"), CPL_ERROR_NONE);
126 cpl_test_eq_error(irplib_sdp_spectrum_set_asson(a, 1,
"qrs"), CPL_ERROR_NONE);
127 cpl_test_eq_error(irplib_sdp_spectrum_set_assoc(a, 1,
"rst"), CPL_ERROR_NONE);
128 cpl_test_eq_error(irplib_sdp_spectrum_set_assom(a, 1,
"stu"), CPL_ERROR_NONE);
132 static int test_get_set_functions(
void)
137 cpl_test_assert(a != NULL);
142 b = irplib_sdp_spectrum_duplicate(a);
143 cpl_test_assert(b != NULL);
144 cpl_test_abs(irplib_sdp_spectrum_get_ra(b), 1.23, DBL_EPSILON);
145 cpl_test_abs(irplib_sdp_spectrum_get_dec(b), 2.34, DBL_EPSILON);
146 cpl_test_abs(irplib_sdp_spectrum_get_exptime(b), 3.45, DBL_EPSILON);
147 cpl_test_abs(irplib_sdp_spectrum_get_texptime(b), 5.34, DBL_EPSILON);
148 cpl_test_eq_string(irplib_sdp_spectrum_get_timesys(b),
"gmt");
149 cpl_test_abs(irplib_sdp_spectrum_get_mjdobs(b), 4.56, DBL_EPSILON);
150 cpl_test_abs(irplib_sdp_spectrum_get_mjdend(b), 5.67, DBL_EPSILON);
151 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(b), 678);
152 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(b),
"abc");
153 cpl_test_eq_string(irplib_sdp_spectrum_get_prodcatg(b),
"bcd");
154 cpl_test_eq_string(irplib_sdp_spectrum_get_origin(b),
"cde");
155 cpl_test_eq(irplib_sdp_spectrum_get_extobj(b), CPL_TRUE);
156 cpl_test_eq_string(irplib_sdp_spectrum_get_dispelem(b),
"def");
157 cpl_test_eq_string(irplib_sdp_spectrum_get_specsys(b),
"efg");
158 cpl_test_eq_string(irplib_sdp_spectrum_get_progid(b),
"fgh");
159 cpl_test_eq(irplib_sdp_spectrum_get_obid(b, 1), 789);
160 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(b), CPL_TRUE);
161 cpl_test_eq_string(irplib_sdp_spectrum_get_obstech(b),
"ghi");
162 cpl_test_eq_string(irplib_sdp_spectrum_get_fluxcal(b),
"hij");
163 cpl_test_eq(irplib_sdp_spectrum_get_contnorm(b), CPL_TRUE);
164 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(b), 8.90, DBL_EPSILON);
165 cpl_test_abs(irplib_sdp_spectrum_get_wavelmax(b), 9.01, DBL_EPSILON);
166 cpl_test_abs(irplib_sdp_spectrum_get_specbin(b), 10.12, DBL_EPSILON);
167 cpl_test_eq(irplib_sdp_spectrum_get_totflux(b), CPL_TRUE);
168 cpl_test_abs(irplib_sdp_spectrum_get_fluxerr(b), 432.19, DBL_EPSILON);
169 cpl_test_eq_string(irplib_sdp_spectrum_get_referenc(b),
"ijk");
170 cpl_test_abs(irplib_sdp_spectrum_get_specres(b), 23.45, DBL_EPSILON);
171 cpl_test_abs(irplib_sdp_spectrum_get_specerr(b), 34.56, DBL_EPSILON);
172 cpl_test_abs(irplib_sdp_spectrum_get_specsye(b), 45.67, DBL_EPSILON);
173 cpl_test_eq(irplib_sdp_spectrum_get_lamnlin(b), 5678);
174 cpl_test_abs(irplib_sdp_spectrum_get_lamrms(b), 67.89, DBL_EPSILON);
175 cpl_test_abs(irplib_sdp_spectrum_get_gain(b), 78.90, DBL_EPSILON);
176 cpl_test_abs(irplib_sdp_spectrum_get_detron(b), 89.01, DBL_EPSILON);
177 cpl_test_abs(irplib_sdp_spectrum_get_effron(b), 90.12, DBL_EPSILON);
178 cpl_test_abs(irplib_sdp_spectrum_get_snr(b), 93.75, DBL_EPSILON);
179 cpl_test_eq(irplib_sdp_spectrum_get_ncombine(b), 12345);
180 cpl_test_eq_string(irplib_sdp_spectrum_get_voclass(b),
"jkl");
181 cpl_test_eq_string(irplib_sdp_spectrum_get_vopub(b),
"klm");
182 cpl_test_eq_string(irplib_sdp_spectrum_get_title(b),
"lmn");
183 cpl_test_eq_string(irplib_sdp_spectrum_get_object(b),
"mno");
184 cpl_test_abs(irplib_sdp_spectrum_get_aperture(b), 234.56, DBL_EPSILON);
185 cpl_test_abs(irplib_sdp_spectrum_get_telapse(b), 345.67, DBL_EPSILON);
186 cpl_test_abs(irplib_sdp_spectrum_get_tmid(b), 456.78, DBL_EPSILON);
187 cpl_test_abs(irplib_sdp_spectrum_get_specval(b), 567.89, DBL_EPSILON);
188 cpl_test_abs(irplib_sdp_spectrum_get_specbw(b), 678.90, DBL_EPSILON);
189 cpl_test_eq_string(irplib_sdp_spectrum_get_extname(b),
"nop");
190 cpl_test_eq(irplib_sdp_spectrum_get_inherit(b), CPL_TRUE);
191 cpl_test_eq(irplib_sdp_spectrum_get_nelem(b), 78901);
192 cpl_test_abs(irplib_sdp_spectrum_get_tdmin(b), 890.12, DBL_EPSILON);
193 cpl_test_abs(irplib_sdp_spectrum_get_tdmax(b), 901.23, DBL_EPSILON);
194 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(b, 1),
"opq");
195 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(b, 2),
"pqr");
196 cpl_test_eq_string(irplib_sdp_spectrum_get_asson(b, 1),
"qrs");
197 cpl_test_eq_string(irplib_sdp_spectrum_get_assoc(b, 1),
"rst");
198 cpl_test_eq_string(irplib_sdp_spectrum_get_assom(b, 1),
"stu");
201 cpl_test_eq_error(irplib_sdp_spectrum_reset_ra(b), CPL_ERROR_NONE);
202 cpl_test_error(CPL_ERROR_NONE);
203 cpl_test_eq_error(irplib_sdp_spectrum_reset_dec(b), CPL_ERROR_NONE);
204 cpl_test_error(CPL_ERROR_NONE);
205 cpl_test_eq_error(irplib_sdp_spectrum_reset_exptime(b), CPL_ERROR_NONE);
206 cpl_test_error(CPL_ERROR_NONE);
207 cpl_test_eq_error(irplib_sdp_spectrum_reset_texptime(b), CPL_ERROR_NONE);
208 cpl_test_error(CPL_ERROR_NONE);
209 cpl_test_eq_error(irplib_sdp_spectrum_reset_timesys(b), CPL_ERROR_NONE);
210 cpl_test_error(CPL_ERROR_NONE);
211 cpl_test_eq_error(irplib_sdp_spectrum_reset_mjdobs(b), CPL_ERROR_NONE);
212 cpl_test_error(CPL_ERROR_NONE);
213 cpl_test_eq_error(irplib_sdp_spectrum_reset_mjdend(b), CPL_ERROR_NONE);
214 cpl_test_error(CPL_ERROR_NONE);
215 cpl_test_eq_error(irplib_sdp_spectrum_reset_prodlvl(b), CPL_ERROR_NONE);
216 cpl_test_error(CPL_ERROR_NONE);
217 cpl_test_eq_error(irplib_sdp_spectrum_reset_procsoft(b), CPL_ERROR_NONE);
218 cpl_test_error(CPL_ERROR_NONE);
219 cpl_test_eq_error(irplib_sdp_spectrum_reset_prodcatg(b), CPL_ERROR_NONE);
220 cpl_test_error(CPL_ERROR_NONE);
221 cpl_test_eq_error(irplib_sdp_spectrum_reset_origin(b), CPL_ERROR_NONE);
222 cpl_test_error(CPL_ERROR_NONE);
223 cpl_test_eq_error(irplib_sdp_spectrum_reset_extobj(b), CPL_ERROR_NONE);
224 cpl_test_error(CPL_ERROR_NONE);
225 cpl_test_eq_error(irplib_sdp_spectrum_reset_dispelem(b), CPL_ERROR_NONE);
226 cpl_test_error(CPL_ERROR_NONE);
227 cpl_test_eq_error(irplib_sdp_spectrum_reset_specsys(b), CPL_ERROR_NONE);
228 cpl_test_error(CPL_ERROR_NONE);
229 cpl_test_eq_error(irplib_sdp_spectrum_reset_progid(b), CPL_ERROR_NONE);
230 cpl_test_error(CPL_ERROR_NONE);
231 cpl_test_eq_error(irplib_sdp_spectrum_reset_obid(b, 1), CPL_ERROR_NONE);
232 cpl_test_error(CPL_ERROR_NONE);
233 cpl_test_eq_error(irplib_sdp_spectrum_reset_mepoch(b), CPL_ERROR_NONE);
234 cpl_test_error(CPL_ERROR_NONE);
235 cpl_test_eq_error(irplib_sdp_spectrum_reset_obstech(b), CPL_ERROR_NONE);
236 cpl_test_error(CPL_ERROR_NONE);
237 cpl_test_eq_error(irplib_sdp_spectrum_reset_fluxcal(b), CPL_ERROR_NONE);
238 cpl_test_error(CPL_ERROR_NONE);
239 cpl_test_eq_error(irplib_sdp_spectrum_reset_contnorm(b), CPL_ERROR_NONE);
240 cpl_test_error(CPL_ERROR_NONE);
241 cpl_test_eq_error(irplib_sdp_spectrum_reset_wavelmin(b), CPL_ERROR_NONE);
242 cpl_test_error(CPL_ERROR_NONE);
243 cpl_test_eq_error(irplib_sdp_spectrum_reset_wavelmax(b), CPL_ERROR_NONE);
244 cpl_test_error(CPL_ERROR_NONE);
245 cpl_test_eq_error(irplib_sdp_spectrum_reset_specbin(b), CPL_ERROR_NONE);
246 cpl_test_error(CPL_ERROR_NONE);
247 cpl_test_eq_error(irplib_sdp_spectrum_reset_totflux(b), CPL_ERROR_NONE);
248 cpl_test_error(CPL_ERROR_NONE);
249 cpl_test_eq_error(irplib_sdp_spectrum_reset_fluxerr(b), CPL_ERROR_NONE);
250 cpl_test_error(CPL_ERROR_NONE);
251 cpl_test_eq_error(irplib_sdp_spectrum_reset_referenc(b), CPL_ERROR_NONE);
252 cpl_test_error(CPL_ERROR_NONE);
253 cpl_test_eq_error(irplib_sdp_spectrum_reset_specres(b), CPL_ERROR_NONE);
254 cpl_test_error(CPL_ERROR_NONE);
255 cpl_test_eq_error(irplib_sdp_spectrum_reset_specerr(b), CPL_ERROR_NONE);
256 cpl_test_error(CPL_ERROR_NONE);
257 cpl_test_eq_error(irplib_sdp_spectrum_reset_specsye(b), CPL_ERROR_NONE);
258 cpl_test_error(CPL_ERROR_NONE);
259 cpl_test_eq_error(irplib_sdp_spectrum_reset_lamnlin(b), CPL_ERROR_NONE);
260 cpl_test_error(CPL_ERROR_NONE);
261 cpl_test_eq_error(irplib_sdp_spectrum_reset_lamrms(b), CPL_ERROR_NONE);
262 cpl_test_error(CPL_ERROR_NONE);
263 cpl_test_eq_error(irplib_sdp_spectrum_reset_gain(b), CPL_ERROR_NONE);
264 cpl_test_error(CPL_ERROR_NONE);
265 cpl_test_eq_error(irplib_sdp_spectrum_reset_detron(b), CPL_ERROR_NONE);
266 cpl_test_error(CPL_ERROR_NONE);
267 cpl_test_eq_error(irplib_sdp_spectrum_reset_effron(b), CPL_ERROR_NONE);
268 cpl_test_error(CPL_ERROR_NONE);
269 cpl_test_eq_error(irplib_sdp_spectrum_reset_snr(b), CPL_ERROR_NONE);
270 cpl_test_error(CPL_ERROR_NONE);
271 cpl_test_eq_error(irplib_sdp_spectrum_reset_ncombine(b), CPL_ERROR_NONE);
272 cpl_test_error(CPL_ERROR_NONE);
273 cpl_test_eq_error(irplib_sdp_spectrum_reset_voclass(b), CPL_ERROR_NONE);
274 cpl_test_error(CPL_ERROR_NONE);
275 cpl_test_eq_error(irplib_sdp_spectrum_reset_vopub(b), CPL_ERROR_NONE);
276 cpl_test_error(CPL_ERROR_NONE);
277 cpl_test_eq_error(irplib_sdp_spectrum_reset_title(b), CPL_ERROR_NONE);
278 cpl_test_error(CPL_ERROR_NONE);
279 cpl_test_eq_error(irplib_sdp_spectrum_reset_object(b), CPL_ERROR_NONE);
280 cpl_test_error(CPL_ERROR_NONE);
281 cpl_test_eq_error(irplib_sdp_spectrum_reset_aperture(b), CPL_ERROR_NONE);
282 cpl_test_error(CPL_ERROR_NONE);
283 cpl_test_eq_error(irplib_sdp_spectrum_reset_telapse(b), CPL_ERROR_NONE);
284 cpl_test_error(CPL_ERROR_NONE);
285 cpl_test_eq_error(irplib_sdp_spectrum_reset_tmid(b), CPL_ERROR_NONE);
286 cpl_test_error(CPL_ERROR_NONE);
287 cpl_test_eq_error(irplib_sdp_spectrum_reset_specval(b), CPL_ERROR_NONE);
288 cpl_test_error(CPL_ERROR_NONE);
289 cpl_test_eq_error(irplib_sdp_spectrum_reset_specbw(b), CPL_ERROR_NONE);
290 cpl_test_error(CPL_ERROR_NONE);
291 cpl_test_eq_error(irplib_sdp_spectrum_reset_extname(b), CPL_ERROR_NONE);
292 cpl_test_error(CPL_ERROR_NONE);
293 cpl_test_eq_error(irplib_sdp_spectrum_reset_inherit(b), CPL_ERROR_NONE);
294 cpl_test_error(CPL_ERROR_NONE);
295 cpl_test_eq_error(irplib_sdp_spectrum_reset_nelem(b), CPL_ERROR_NONE);
296 cpl_test_error(CPL_ERROR_NONE);
297 cpl_test_eq_error(irplib_sdp_spectrum_reset_tdmin(b), CPL_ERROR_NONE);
298 cpl_test_error(CPL_ERROR_NONE);
299 cpl_test_eq_error(irplib_sdp_spectrum_reset_tdmax(b), CPL_ERROR_NONE);
300 cpl_test_error(CPL_ERROR_NONE);
301 cpl_test_eq_error(irplib_sdp_spectrum_reset_prov(b, 1), CPL_ERROR_NONE);
302 cpl_test_error(CPL_ERROR_NONE);
303 cpl_test_eq_error(irplib_sdp_spectrum_reset_prov(b, 2), CPL_ERROR_NONE);
304 cpl_test_error(CPL_ERROR_NONE);
305 cpl_test_eq_error(irplib_sdp_spectrum_reset_asson(b, 1), CPL_ERROR_NONE);
306 cpl_test_error(CPL_ERROR_NONE);
307 cpl_test_eq_error(irplib_sdp_spectrum_reset_assoc(b, 1), CPL_ERROR_NONE);
308 cpl_test_error(CPL_ERROR_NONE);
309 cpl_test_eq_error(irplib_sdp_spectrum_reset_assom(b, 1), CPL_ERROR_NONE);
310 cpl_test_error(CPL_ERROR_NONE);
313 cpl_test(isnan(irplib_sdp_spectrum_get_ra(b)));
314 cpl_test(isnan(irplib_sdp_spectrum_get_dec(b)));
315 cpl_test(isnan(irplib_sdp_spectrum_get_exptime(b)));
316 cpl_test(isnan(irplib_sdp_spectrum_get_texptime(b)));
317 cpl_test_null(irplib_sdp_spectrum_get_timesys(b));
318 cpl_test(isnan(irplib_sdp_spectrum_get_mjdobs(b)));
319 cpl_test(isnan(irplib_sdp_spectrum_get_mjdend(b)));
320 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(b), -1);
321 cpl_test_null(irplib_sdp_spectrum_get_procsoft(b));
322 cpl_test_null(irplib_sdp_spectrum_get_prodcatg(b));
323 cpl_test_null(irplib_sdp_spectrum_get_origin(b));
324 cpl_test_eq(irplib_sdp_spectrum_get_extobj(b), CPL_FALSE);
325 cpl_test_null(irplib_sdp_spectrum_get_dispelem(b));
326 cpl_test_null(irplib_sdp_spectrum_get_specsys(b));
327 cpl_test_null(irplib_sdp_spectrum_get_progid(b));
328 cpl_test_eq(irplib_sdp_spectrum_get_obid(b, 1), -1);
329 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(b), CPL_FALSE);
330 cpl_test_null(irplib_sdp_spectrum_get_obstech(b));
331 cpl_test_null(irplib_sdp_spectrum_get_fluxcal(b));
332 cpl_test_eq(irplib_sdp_spectrum_get_contnorm(b), CPL_FALSE);
333 cpl_test(isnan(irplib_sdp_spectrum_get_wavelmin(b)));
334 cpl_test(isnan(irplib_sdp_spectrum_get_wavelmax(b)));
335 cpl_test(isnan(irplib_sdp_spectrum_get_specbin(b)));
336 cpl_test_eq(irplib_sdp_spectrum_get_totflux(b), CPL_FALSE);
337 cpl_test(isnan(irplib_sdp_spectrum_get_fluxerr(b)));
338 cpl_test_null(irplib_sdp_spectrum_get_referenc(b));
339 cpl_test(isnan(irplib_sdp_spectrum_get_specres(b)));
340 cpl_test(isnan(irplib_sdp_spectrum_get_specerr(b)));
341 cpl_test(isnan(irplib_sdp_spectrum_get_specsye(b)));
342 cpl_test_eq(irplib_sdp_spectrum_get_lamnlin(b), -1);
343 cpl_test(isnan(irplib_sdp_spectrum_get_lamrms(b)));
344 cpl_test(isnan(irplib_sdp_spectrum_get_gain(b)));
345 cpl_test(isnan(irplib_sdp_spectrum_get_detron(b)));
346 cpl_test(isnan(irplib_sdp_spectrum_get_effron(b)));
347 cpl_test(isnan(irplib_sdp_spectrum_get_snr(b)));
348 cpl_test_eq(irplib_sdp_spectrum_get_ncombine(b), -1);
349 cpl_test_null(irplib_sdp_spectrum_get_voclass(b));
350 cpl_test_null(irplib_sdp_spectrum_get_vopub(b));
351 cpl_test_null(irplib_sdp_spectrum_get_title(b));
352 cpl_test_null(irplib_sdp_spectrum_get_object(b));
353 cpl_test(isnan(irplib_sdp_spectrum_get_aperture(b)));
354 cpl_test(isnan(irplib_sdp_spectrum_get_telapse(b)));
355 cpl_test(isnan(irplib_sdp_spectrum_get_tmid(b)));
356 cpl_test(isnan(irplib_sdp_spectrum_get_specval(b)));
357 cpl_test(isnan(irplib_sdp_spectrum_get_specbw(b)));
358 cpl_test_null(irplib_sdp_spectrum_get_extname(b));
359 cpl_test_eq(irplib_sdp_spectrum_get_inherit(b), CPL_FALSE);
360 cpl_test_eq(irplib_sdp_spectrum_get_nelem(b), 0);
361 cpl_test(isnan(irplib_sdp_spectrum_get_tdmin(b)));
362 cpl_test(isnan(irplib_sdp_spectrum_get_tdmax(b)));
363 cpl_test_null(irplib_sdp_spectrum_get_prov(b, 1));
364 cpl_test_null(irplib_sdp_spectrum_get_prov(b, 2));
365 cpl_test_null(irplib_sdp_spectrum_get_asson(b, 1));
366 cpl_test_null(irplib_sdp_spectrum_get_assoc(b, 1));
367 cpl_test_null(irplib_sdp_spectrum_get_assom(b, 1));
369 irplib_sdp_spectrum_delete(b);
370 irplib_sdp_spectrum_delete(a);
372 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
376 static int test_count_functions(
void)
379 cpl_test_assert(a != NULL);
383 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 0);
384 irplib_sdp_spectrum_set_obid(a, 1, 1234);
385 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 1);
386 irplib_sdp_spectrum_set_obid(a, 2, 2345);
387 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 2);
388 irplib_sdp_spectrum_set_obid(a, 3, 3456);
389 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 3);
390 irplib_sdp_spectrum_set_obid(a, 901, 9012);
391 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 4);
393 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 0);
394 irplib_sdp_spectrum_set_prov(a, 1,
"a");
395 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 1);
396 irplib_sdp_spectrum_set_prov(a, 2,
"b");
397 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 2);
398 irplib_sdp_spectrum_set_prov(a, 3,
"c");
399 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 3);
400 irplib_sdp_spectrum_set_prov(a, 901,
"d");
401 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 4);
403 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 0);
404 irplib_sdp_spectrum_set_asson(a, 1,
"a");
405 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 1);
406 irplib_sdp_spectrum_set_asson(a, 2,
"b");
407 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 2);
408 irplib_sdp_spectrum_set_asson(a, 3,
"c");
409 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 3);
410 irplib_sdp_spectrum_set_asson(a, 901,
"d");
411 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 4);
413 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 0);
414 irplib_sdp_spectrum_set_assoc(a, 1,
"a");
415 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 1);
416 irplib_sdp_spectrum_set_assoc(a, 2,
"b");
417 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 2);
418 irplib_sdp_spectrum_set_assoc(a, 3,
"c");
419 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 3);
420 irplib_sdp_spectrum_set_assoc(a, 901,
"d");
421 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 4);
423 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 0);
424 irplib_sdp_spectrum_set_assom(a, 1,
"a");
425 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 1);
426 irplib_sdp_spectrum_set_assom(a, 2,
"b");
427 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 2);
428 irplib_sdp_spectrum_set_assom(a, 3,
"c");
429 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 3);
430 irplib_sdp_spectrum_set_assom(a, 901,
"d");
431 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 4);
436 irplib_sdp_spectrum_reset_obid(a, 901);
437 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 3);
438 irplib_sdp_spectrum_reset_obid(a, 2);
439 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 2);
440 irplib_sdp_spectrum_reset_obid(a, 1);
441 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 1);
442 irplib_sdp_spectrum_reset_obid(a, 3);
443 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 0);
445 irplib_sdp_spectrum_reset_prov(a, 901);
446 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 3);
447 irplib_sdp_spectrum_reset_prov(a, 2);
448 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 2);
449 irplib_sdp_spectrum_reset_prov(a, 1);
450 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 1);
451 irplib_sdp_spectrum_reset_prov(a, 3);
452 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 0);
454 irplib_sdp_spectrum_reset_asson(a, 901);
455 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 3);
456 irplib_sdp_spectrum_reset_asson(a, 2);
457 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 2);
458 irplib_sdp_spectrum_reset_asson(a, 1);
459 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 1);
460 irplib_sdp_spectrum_reset_asson(a, 3);
461 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 0);
463 irplib_sdp_spectrum_reset_assoc(a, 901);
464 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 3);
465 irplib_sdp_spectrum_reset_assoc(a, 2);
466 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 2);
467 irplib_sdp_spectrum_reset_assoc(a, 1);
468 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 1);
469 irplib_sdp_spectrum_reset_assoc(a, 3);
470 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 0);
472 irplib_sdp_spectrum_reset_assom(a, 901);
473 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 3);
474 irplib_sdp_spectrum_reset_assom(a, 2);
475 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 2);
476 irplib_sdp_spectrum_reset_assom(a, 1);
477 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 1);
478 irplib_sdp_spectrum_reset_assom(a, 3);
479 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 0);
481 irplib_sdp_spectrum_delete(a);
482 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
486 static int test_column_functions(
void)
488 const cpl_array *data;
490 cpl_test_assert(a != NULL);
492 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
495 cpl_test_eq_error(irplib_sdp_spectrum_new_column(a,
"A", CPL_TYPE_INT),
497 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
498 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 0);
499 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a,
"A"),
500 CPL_TYPE_INT | CPL_TYPE_POINTER);
501 cpl_test_null(irplib_sdp_spectrum_get_column_unit(a,
"A"));
502 cpl_test_nonnull(irplib_sdp_spectrum_get_column_format(a,
"A"));
503 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a,
"A"));
504 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a,
"A"));
505 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
506 cpl_test_null(irplib_sdp_spectrum_get_column_data(a,
"A"));
507 cpl_test_error(CPL_ERROR_NONE);
512 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a,
"A",
"x"),
514 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"x");
515 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a,
"A",
"y"),
517 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"y");
518 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a,
"A",
"z"),
520 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tcomm(a,
"A"),
"z");
522 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a,
"A", NULL),
524 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a,
"A"));
525 cpl_test_error(CPL_ERROR_NONE);
526 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a,
"A", NULL),
528 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a,
"A"));
529 cpl_test_error(CPL_ERROR_NONE);
530 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a,
"A", NULL),
532 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
533 cpl_test_error(CPL_ERROR_NONE);
536 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
537 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
538 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a,
"A"));
539 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
540 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a,
"A"));
541 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
542 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
543 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
544 cpl_test_null(irplib_sdp_spectrum_get_column_data(a,
"A"));
545 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
549 irplib_sdp_spectrum_add_column(a,
"A", CPL_TYPE_FLOAT,
550 NULL, NULL, NULL, NULL, NULL),
553 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
554 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 0);
555 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a,
"A"),
556 CPL_TYPE_FLOAT | CPL_TYPE_POINTER);
557 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
" ");
558 cpl_test_nonnull(irplib_sdp_spectrum_get_column_format(a,
"A"));
559 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
560 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
561 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
562 cpl_test_nonnull(irplib_sdp_spectrum_get_column_data(a,
"A"));
563 cpl_test_error(CPL_ERROR_NONE);
565 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
566 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
570 irplib_sdp_spectrum_add_column(a,
"A", CPL_TYPE_DOUBLE,
"s",
"1E",
574 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
575 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 0);
576 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a,
"A"),
577 CPL_TYPE_DOUBLE | CPL_TYPE_POINTER);
578 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"s");
579 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"1E");
580 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
581 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
582 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
583 cpl_test_nonnull(irplib_sdp_spectrum_get_column_data(a,
"A"));
586 cpl_test_eq_error(irplib_sdp_spectrum_set_column_unit(a,
"A",
"sec"),
588 cpl_test_eq_error(irplib_sdp_spectrum_set_column_format(a,
"A",
"2E"),
590 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a,
"A",
"t1"),
592 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a,
"A",
"u1"),
594 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a,
"A",
"cmnt 1"),
596 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"sec");
597 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"2E");
598 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"t1");
599 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"u1");
600 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tcomm(a,
"A"),
"cmnt 1");
601 data = irplib_sdp_spectrum_get_column_data(a,
"A");
602 cpl_test_nonnull(data);
603 cpl_test_eq(cpl_array_get_size(data), 0);
606 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 10), CPL_ERROR_NONE);
607 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 10);
608 data = irplib_sdp_spectrum_get_column_data(a,
"A");
609 cpl_test_nonnull(data);
610 cpl_test_eq(cpl_array_get_size(data), 10);
613 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a,
"C"), CPL_TYPE_INVALID);
614 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
615 cpl_test_null(irplib_sdp_spectrum_get_column_unit(a,
"C"));
616 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
617 cpl_test_null(irplib_sdp_spectrum_get_column_format(a,
"C"));
618 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
619 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a,
"C"));
620 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
621 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a,
"C"));
622 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
623 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"C"));
624 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
625 cpl_test_null(irplib_sdp_spectrum_get_column_data(a,
"C"));
626 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
630 irplib_sdp_spectrum_add_column(a,
"B", CPL_TYPE_INT,
"adu",
"1J",
634 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 2);
635 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a,
"B"),
636 CPL_TYPE_INT | CPL_TYPE_POINTER);
637 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"B"),
"adu");
638 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"B"),
"1J");
639 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"B"),
"");
640 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"B"),
"");
641 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"B"));
642 data = irplib_sdp_spectrum_get_column_data(a,
"B");
643 cpl_test_nonnull(data);
644 cpl_test_eq(cpl_array_get_size(data), 10);
647 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 5), CPL_ERROR_NONE);
648 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 5);
649 data = irplib_sdp_spectrum_get_column_data(a,
"A");
650 cpl_test_nonnull(data);
651 cpl_test_eq(cpl_array_get_size(data), 5);
652 data = irplib_sdp_spectrum_get_column_data(a,
"B");
653 cpl_test_nonnull(data);
654 cpl_test_eq(cpl_array_get_size(data), 5);
656 irplib_sdp_spectrum_delete(a);
657 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
661 static int test_equal_function(
void)
664 double datapoints1[5] = {1.2, 2.3, 3.4, 4.5, 5.6};
665 double datapoints2[5] = {1.1, 2.4, 5.4, 4.6, 3.6};
671 a = irplib_sdp_spectrum_new();
672 cpl_test_assert(a != NULL);
673 b = irplib_sdp_spectrum_new();
674 cpl_test_assert(b != NULL);
675 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_TRUE);
676 cpl_test_error(CPL_ERROR_NONE);
677 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_TRUE);
678 cpl_test_error(CPL_ERROR_NONE);
679 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_TRUE);
680 cpl_test_error(CPL_ERROR_NONE);
681 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_TRUE);
682 cpl_test_error(CPL_ERROR_NONE);
683 irplib_sdp_spectrum_delete(b);
684 irplib_sdp_spectrum_delete(a);
687 a = irplib_sdp_spectrum_new();
688 cpl_test_assert(a != NULL);
690 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 5), CPL_ERROR_NONE);
692 irplib_sdp_spectrum_add_column(a,
"A", CPL_TYPE_DOUBLE,
"s",
"1E",
696 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a,
"A",
"t1"),
698 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a,
"A",
"u1"),
700 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a,
"A",
"c1"),
702 data = cpl_array_wrap_double(datapoints1, 5);
703 cpl_test_nonnull(data);
704 cpl_test_eq_error(irplib_sdp_spectrum_set_column_data(a,
"A", data),
706 cpl_array_unwrap(data);
708 b = irplib_sdp_spectrum_duplicate(a);
709 cpl_test_assert(b != NULL);
710 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_TRUE);
711 cpl_test_error(CPL_ERROR_NONE);
712 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_TRUE);
713 cpl_test_error(CPL_ERROR_NONE);
714 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_TRUE);
715 cpl_test_error(CPL_ERROR_NONE);
716 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_TRUE);
717 cpl_test_error(CPL_ERROR_NONE);
721 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(b,
"A",
"T3"),
723 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_FALSE);
724 cpl_test_error(CPL_ERROR_NONE);
725 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_FALSE);
726 cpl_test_error(CPL_ERROR_NONE);
727 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_FALSE);
728 cpl_test_error(CPL_ERROR_NONE);
729 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_FALSE);
730 cpl_test_error(CPL_ERROR_NONE);
733 irplib_sdp_spectrum_delete(b);
734 b = irplib_sdp_spectrum_duplicate(a);
736 irplib_sdp_spectrum_add_column(b,
"B", CPL_TYPE_DOUBLE,
"adu",
"1J",
740 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_FALSE);
741 cpl_test_error(CPL_ERROR_NONE);
742 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_FALSE);
743 cpl_test_error(CPL_ERROR_NONE);
744 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_TRUE);
745 cpl_test_error(CPL_ERROR_NONE);
746 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_TRUE);
747 cpl_test_error(CPL_ERROR_NONE);
750 irplib_sdp_spectrum_delete(b);
751 b = irplib_sdp_spectrum_duplicate(a);
752 data = cpl_array_wrap_double(datapoints2, 5);
753 cpl_test_nonnull(data);
754 cpl_test_eq_error(irplib_sdp_spectrum_set_column_data(b,
"A", data),
756 cpl_array_unwrap(data);
757 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_FALSE);
758 cpl_test_error(CPL_ERROR_NONE);
759 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_FALSE);
760 cpl_test_error(CPL_ERROR_NONE);
761 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_FALSE);
762 cpl_test_error(CPL_ERROR_NONE);
763 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_FALSE);
764 cpl_test_error(CPL_ERROR_NONE);
768 irplib_sdp_spectrum_delete(b);
769 b = irplib_sdp_spectrum_duplicate(a);
770 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 4), CPL_ERROR_NONE);
771 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_FALSE);
772 cpl_test_error(CPL_ERROR_NONE);
773 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_FALSE);
774 cpl_test_error(CPL_ERROR_NONE);
775 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_TRUE);
776 cpl_test_error(CPL_ERROR_NONE);
777 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_TRUE);
778 cpl_test_error(CPL_ERROR_NONE);
781 irplib_sdp_spectrum_delete(b);
782 b = irplib_sdp_spectrum_duplicate(a);
783 cpl_test_eq_error(irplib_sdp_spectrum_set_dec(b, 999), CPL_ERROR_NONE);
784 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_FALSE);
785 cpl_test_error(CPL_ERROR_NONE);
786 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_FALSE);
787 cpl_test_error(CPL_ERROR_NONE);
788 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_FALSE);
789 cpl_test_error(CPL_ERROR_NONE);
790 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_FALSE);
791 cpl_test_error(CPL_ERROR_NONE);
794 irplib_sdp_spectrum_delete(b);
795 b = irplib_sdp_spectrum_duplicate(a);
796 cpl_test_eq_error(irplib_sdp_spectrum_reset_dec(a), CPL_ERROR_NONE);
797 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_FALSE);
798 cpl_test_error(CPL_ERROR_NONE);
799 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_FALSE) == CPL_FALSE);
800 cpl_test_error(CPL_ERROR_NONE);
801 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_TRUE) == CPL_TRUE);
802 cpl_test_error(CPL_ERROR_NONE);
803 cpl_test(irplib_sdp_spectrum_equal(b, a, CPL_TRUE) == CPL_TRUE);
804 cpl_test_error(CPL_ERROR_NONE);
806 irplib_sdp_spectrum_delete(b);
807 irplib_sdp_spectrum_delete(a);
808 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
812 static int test_io_functions(
void)
814 cpl_frameset *emptyframes = cpl_frameset_new();
815 cpl_frameset *allframes = cpl_frameset_new();
816 cpl_propertylist *header = cpl_propertylist_new();
817 cpl_parameterlist *parlist = cpl_parameterlist_new();
818 cpl_frameset *usedframes = cpl_frameset_new();
819 const cpl_frame *inherit = NULL;
820 const char *recipe =
"test_recipe";
821 cpl_propertylist *applist = cpl_propertylist_new();
822 cpl_propertylist *tablelist = cpl_propertylist_new();
823 const char *remregexp =
"^(CHECKSUM|DATASUM)$";
824 const char *pipe_id =
"iiinstrument";
825 const char *dict_id =
"TEST_DICT";
826 cpl_error_code error;
827 const char *filename1 =
"dummy_raw_input1.fits";
828 const char *filename2 =
"dummy_test_sdp_spectrum1.fits";
829 const char *filename3 =
"dummy_test_sdp_spectrum2.fits";
830 const char *filename4 =
"dummy_test_sdp_spectrum3.fits";
831 cpl_array *data = NULL;
832 double datapoints[5] = {1.2, 2.3, 3.4, 4.5, 5.6};
836 cpl_frame *
frame = cpl_frame_new();
837 cpl_propertylist *plist = cpl_propertylist_new();
838 cpl_image *image = cpl_image_new(10, 10, CPL_TYPE_FLOAT);
840 cpl_test_assert(allframes != NULL);
841 cpl_test_assert(header != NULL);
842 cpl_test_assert(parlist != NULL);
843 cpl_test_assert(usedframes != NULL);
844 cpl_test_assert(applist != NULL);
845 cpl_test_assert(tablelist != NULL);
846 cpl_test_assert(a != NULL);
849 (void)
remove(filename1);
850 (void)
remove(filename2);
851 (void)
remove(filename3);
852 (void)
remove(filename4);
856 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 2), CPL_ERROR_NONE);
858 irplib_sdp_spectrum_add_column(a,
"A", CPL_TYPE_DOUBLE,
"s",
"5D",
862 cpl_test_eq_error(irplib_sdp_spectrum_save(a, filename2, NULL, NULL),
864 b = irplib_sdp_spectrum_load(filename2);
866 cpl_test_error(CPL_ERROR_NONE);
867 cpl_test_eq_error(irplib_sdp_spectrum_reset_origin(b), CPL_ERROR_NONE);
868 cpl_test_eq_error(irplib_sdp_spectrum_reset_prodlvl(b), CPL_ERROR_NONE);
869 cpl_test_eq_error(irplib_sdp_spectrum_reset_specsys(b), CPL_ERROR_NONE);
870 cpl_test_eq_error(irplib_sdp_spectrum_reset_fluxerr(b), CPL_ERROR_NONE);
871 cpl_test_eq_error(irplib_sdp_spectrum_reset_referenc(b), CPL_ERROR_NONE);
872 cpl_test_eq_error(irplib_sdp_spectrum_reset_voclass(b), CPL_ERROR_NONE);
873 cpl_test_eq_error(irplib_sdp_spectrum_reset_vopub(b), CPL_ERROR_NONE);
874 cpl_test_eq_error(irplib_sdp_spectrum_reset_extname(b), CPL_ERROR_NONE);
875 cpl_test_eq_error(irplib_sdp_spectrum_reset_inherit(b), CPL_ERROR_NONE);
876 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_TRUE);
880 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 5), CPL_ERROR_NONE);
881 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a,
"A",
"t1"),
883 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a,
"A",
"u1"),
885 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a,
"A",
"c1"),
888 data = cpl_array_wrap_double(datapoints, 5);
889 cpl_test_nonnull(data);
890 cpl_test_eq_error(irplib_sdp_spectrum_set_column_data(a,
"A", data),
892 cpl_array_unwrap(data);
894 cpl_test_eq_error(irplib_sdp_spectrum_save(a, filename3, NULL, NULL),
898 irplib_sdp_spectrum_delete(b);
899 b = irplib_sdp_spectrum_load(filename3);
901 cpl_test_error(CPL_ERROR_NONE);
902 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_TRUE);
906 cpl_test_eq_error(cpl_propertylist_append_string(applist, CPL_DFS_PRO_CATG,
910 cpl_test_eq_error(cpl_image_save(image, filename1, CPL_TYPE_FLOAT, plist, CPL_IO_CREATE),
913 cpl_test_eq_error(cpl_frame_set_filename(frame, filename1),
915 cpl_test_eq_error(cpl_frame_set_tag(frame,
"RAW_IMAGE"),
917 cpl_test_eq_error(cpl_frame_set_type(frame, CPL_FRAME_TYPE_IMAGE),
919 cpl_test_eq_error(cpl_frame_set_group(frame, CPL_FRAME_GROUP_RAW),
921 cpl_test_eq_error(cpl_frame_set_level(frame, CPL_FRAME_LEVEL_FINAL),
923 cpl_test_eq_error(cpl_frameset_insert(usedframes, frame), CPL_ERROR_NONE);
925 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
926 inherit, spectrum, recipe, applist, tablelist, remregexp,
927 pipe_id, dict_id, filename4);
928 cpl_test_eq_error(error, CPL_ERROR_NONE);
930 irplib_sdp_spectrum_delete(b);
931 b = irplib_sdp_spectrum_load(filename4);
933 cpl_test_error(CPL_ERROR_NONE);
934 cpl_test(irplib_sdp_spectrum_equal(a, b, CPL_FALSE) == CPL_TRUE);
937 error = irplib_dfs_save_spectrum(NULL, header, parlist, usedframes,
938 inherit, spectrum, recipe, applist, tablelist, remregexp,
939 pipe_id, dict_id, filename4);
940 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
942 error = irplib_dfs_save_spectrum(allframes, header, NULL, usedframes,
943 inherit, spectrum, recipe, applist, tablelist, remregexp,
944 pipe_id, dict_id, filename4);
945 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
947 error = irplib_dfs_save_spectrum(allframes, header, parlist, NULL,
948 inherit, spectrum, recipe, applist, tablelist, remregexp,
949 pipe_id, dict_id, filename4);
950 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
952 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
953 inherit, NULL, recipe, applist, tablelist, remregexp,
954 pipe_id, dict_id, filename4);
955 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
957 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
958 inherit, spectrum, NULL, applist, tablelist, remregexp,
959 pipe_id, dict_id, filename4);
960 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
962 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
963 inherit, spectrum, recipe, NULL, tablelist, remregexp,
964 pipe_id, dict_id, filename4);
965 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
967 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
968 inherit, spectrum, recipe, applist, tablelist, remregexp,
969 NULL, dict_id, filename4);
970 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
972 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
973 inherit, spectrum, recipe, applist, tablelist, remregexp,
974 pipe_id, NULL, filename4);
975 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
977 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
978 inherit, spectrum, recipe, applist, tablelist, remregexp,
979 pipe_id, dict_id, NULL);
980 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
983 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
984 inherit, spectrum, recipe, applist, tablelist, remregexp,
985 pipe_id, dict_id,
"./invalid/");
986 cpl_test_eq_error(error, CPL_ERROR_FILE_NOT_CREATED);
988 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
989 inherit, spectrum, recipe, applist, tablelist,
"^^[[((",
990 pipe_id, dict_id, filename4);
991 cpl_test_eq_error(error, CPL_ERROR_ILLEGAL_INPUT);
993 error = irplib_dfs_save_spectrum(allframes, header, parlist, emptyframes,
994 inherit, spectrum, recipe, applist, tablelist, remregexp,
995 pipe_id, dict_id, filename4);
996 cpl_test_eq_error(error, CPL_ERROR_DATA_NOT_FOUND);
998 cpl_propertylist_empty(applist);
999 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
1000 inherit, spectrum, recipe, applist, tablelist, remregexp,
1001 pipe_id, dict_id, filename4);
1002 cpl_test_eq_error(error, CPL_ERROR_DATA_NOT_FOUND);
1005 if (cpl_test_get_failed() == 0) {
1006 (void)
remove(filename1);
1007 (void)
remove(filename2);
1008 (void)
remove(filename3);
1009 (void)
remove(filename4);
1011 irplib_sdp_spectrum_delete(b);
1012 irplib_sdp_spectrum_delete(a);
1013 cpl_image_delete(image);
1014 cpl_propertylist_delete(plist);
1015 cpl_frameset_delete(emptyframes);
1016 cpl_frameset_delete(allframes);
1017 cpl_propertylist_delete(header);
1018 cpl_parameterlist_delete(parlist);
1019 cpl_frameset_delete(usedframes);
1020 cpl_propertylist_delete(applist);
1021 cpl_propertylist_delete(tablelist);
1022 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
1026 static int test_copy_functions(
void)
1031 cpl_propertylist *plist = cpl_propertylist_new();
1033 cpl_test_assert(plist != NULL);
1034 cpl_test_assert(a != NULL);
1036 cpl_test_assert(cpl_propertylist_append_bool(plist,
"TEST_BOOL", CPL_TRUE)
1038 cpl_test_assert(cpl_propertylist_append_int(plist,
"TEST_INT", 123)
1040 cpl_test_assert(cpl_propertylist_append_long_long(plist,
"TEST_LONGLONG", 432)
1042 cpl_test_assert(cpl_propertylist_append_double(plist,
"TEST_DOUBLE", 2.34)
1044 cpl_test_assert(cpl_propertylist_append_string(plist,
"TEST_STRING",
"abc")
1047 cpl_test_eq_error(irplib_sdp_spectrum_copy_ra(a, plist,
"TEST_DOUBLE"),
1049 cpl_test_abs(irplib_sdp_spectrum_get_ra(a), 2.34, DBL_EPSILON);
1050 cpl_test_eq_error(irplib_sdp_spectrum_copy_dec(a, plist,
"TEST_DOUBLE"),
1052 cpl_test_abs(irplib_sdp_spectrum_get_dec(a), 2.34, DBL_EPSILON);
1053 cpl_test_eq_error(irplib_sdp_spectrum_copy_exptime(a, plist,
"TEST_DOUBLE"),
1055 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 2.34, DBL_EPSILON);
1056 cpl_test_eq_error(irplib_sdp_spectrum_copy_texptime(a, plist,
"TEST_DOUBLE"),
1058 cpl_test_abs(irplib_sdp_spectrum_get_texptime(a), 2.34, DBL_EPSILON);
1059 cpl_test_eq_error(irplib_sdp_spectrum_copy_timesys(a, plist,
"TEST_STRING"),
1061 cpl_test_eq_string(irplib_sdp_spectrum_get_timesys(a),
"abc");
1062 cpl_test_eq_error(irplib_sdp_spectrum_copy_mjdobs(a, plist,
"TEST_DOUBLE"),
1064 cpl_test_abs(irplib_sdp_spectrum_get_mjdobs(a), 2.34, DBL_EPSILON);
1065 cpl_test_eq_error(irplib_sdp_spectrum_copy_mjdend(a, plist,
"TEST_DOUBLE"),
1067 cpl_test_abs(irplib_sdp_spectrum_get_mjdend(a), 2.34, DBL_EPSILON);
1068 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodlvl(a, plist,
"TEST_INT"),
1070 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
1071 cpl_test_eq_error(irplib_sdp_spectrum_copy_procsoft(a, plist,
"TEST_STRING"),
1073 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a),
"abc");
1074 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodcatg(a, plist,
"TEST_STRING"),
1076 cpl_test_eq_string(irplib_sdp_spectrum_get_prodcatg(a),
"abc");
1077 cpl_test_eq_error(irplib_sdp_spectrum_copy_origin(a, plist,
"TEST_STRING"),
1079 cpl_test_eq_string(irplib_sdp_spectrum_get_origin(a),
"abc");
1080 cpl_test_eq_error(irplib_sdp_spectrum_copy_extobj(a, plist,
"TEST_BOOL"),
1082 cpl_test_eq(irplib_sdp_spectrum_get_extobj(a), CPL_TRUE);
1083 cpl_test_eq_error(irplib_sdp_spectrum_copy_dispelem(a, plist,
"TEST_STRING"),
1085 cpl_test_eq_string(irplib_sdp_spectrum_get_dispelem(a),
"abc");
1086 cpl_test_eq_error(irplib_sdp_spectrum_copy_specsys(a, plist,
"TEST_STRING"),
1088 cpl_test_eq_string(irplib_sdp_spectrum_get_specsys(a),
"abc");
1089 cpl_test_eq_error(irplib_sdp_spectrum_copy_progid(a, plist,
"TEST_STRING"),
1091 cpl_test_eq_string(irplib_sdp_spectrum_get_progid(a),
"abc");
1092 cpl_test_eq_error(irplib_sdp_spectrum_copy_obid(a, 1, plist,
"TEST_INT"),
1094 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 123);
1095 cpl_test_eq_error(irplib_sdp_spectrum_copy_mepoch(a, plist,
"TEST_BOOL"),
1097 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
1098 cpl_test_eq_error(irplib_sdp_spectrum_copy_obstech(a, plist,
"TEST_STRING"),
1100 cpl_test_eq_string(irplib_sdp_spectrum_get_obstech(a),
"abc");
1101 cpl_test_eq_error(irplib_sdp_spectrum_copy_fluxcal(a, plist,
"TEST_STRING"),
1103 cpl_test_eq_string(irplib_sdp_spectrum_get_fluxcal(a),
"abc");
1104 cpl_test_eq_error(irplib_sdp_spectrum_copy_contnorm(a, plist,
"TEST_BOOL"),
1106 cpl_test_eq(irplib_sdp_spectrum_get_contnorm(a), CPL_TRUE);
1107 cpl_test_eq_error(irplib_sdp_spectrum_copy_wavelmin(a, plist,
"TEST_DOUBLE"),
1109 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 2.34, DBL_EPSILON);
1110 cpl_test_eq_error(irplib_sdp_spectrum_copy_wavelmax(a, plist,
"TEST_DOUBLE"),
1112 cpl_test_abs(irplib_sdp_spectrum_get_wavelmax(a), 2.34, DBL_EPSILON);
1113 cpl_test_eq_error(irplib_sdp_spectrum_copy_specbin(a, plist,
"TEST_DOUBLE"),
1115 cpl_test_abs(irplib_sdp_spectrum_get_specbin(a), 2.34, DBL_EPSILON);
1116 cpl_test_eq_error(irplib_sdp_spectrum_copy_totflux(a, plist,
"TEST_BOOL"),
1118 cpl_test_eq(irplib_sdp_spectrum_get_totflux(a), CPL_TRUE);
1119 cpl_test_eq_error(irplib_sdp_spectrum_copy_fluxerr(a, plist,
"TEST_DOUBLE"),
1121 cpl_test_abs(irplib_sdp_spectrum_get_fluxerr(a), 2.34, DBL_EPSILON);
1122 cpl_test_eq_error(irplib_sdp_spectrum_copy_referenc(a, plist,
"TEST_STRING"),
1124 cpl_test_eq_string(irplib_sdp_spectrum_get_referenc(a),
"abc");
1125 cpl_test_eq_error(irplib_sdp_spectrum_copy_specres(a, plist,
"TEST_DOUBLE"),
1127 cpl_test_abs(irplib_sdp_spectrum_get_specres(a), 2.34, DBL_EPSILON);
1128 cpl_test_eq_error(irplib_sdp_spectrum_copy_specerr(a, plist,
"TEST_DOUBLE"),
1130 cpl_test_abs(irplib_sdp_spectrum_get_specerr(a), 2.34, DBL_EPSILON);
1131 cpl_test_eq_error(irplib_sdp_spectrum_copy_specsye(a, plist,
"TEST_DOUBLE"),
1133 cpl_test_abs(irplib_sdp_spectrum_get_specsye(a), 2.34, DBL_EPSILON);
1134 cpl_test_eq_error(irplib_sdp_spectrum_copy_lamnlin(a, plist,
"TEST_INT"),
1136 cpl_test_eq(irplib_sdp_spectrum_get_lamnlin(a), 123);
1137 cpl_test_eq_error(irplib_sdp_spectrum_copy_lamrms(a, plist,
"TEST_DOUBLE"),
1139 cpl_test_abs(irplib_sdp_spectrum_get_lamrms(a), 2.34, DBL_EPSILON);
1140 cpl_test_eq_error(irplib_sdp_spectrum_copy_gain(a, plist,
"TEST_DOUBLE"),
1142 cpl_test_abs(irplib_sdp_spectrum_get_gain(a), 2.34, DBL_EPSILON);
1143 cpl_test_eq_error(irplib_sdp_spectrum_copy_detron(a, plist,
"TEST_DOUBLE"),
1145 cpl_test_abs(irplib_sdp_spectrum_get_detron(a), 2.34, DBL_EPSILON);
1146 cpl_test_eq_error(irplib_sdp_spectrum_copy_effron(a, plist,
"TEST_DOUBLE"),
1148 cpl_test_abs(irplib_sdp_spectrum_get_effron(a), 2.34, DBL_EPSILON);
1149 cpl_test_eq_error(irplib_sdp_spectrum_copy_snr(a, plist,
"TEST_DOUBLE"),
1151 cpl_test_abs(irplib_sdp_spectrum_get_snr(a), 2.34, DBL_EPSILON);
1152 cpl_test_eq_error(irplib_sdp_spectrum_copy_ncombine(a, plist,
"TEST_INT"),
1154 cpl_test_eq(irplib_sdp_spectrum_get_ncombine(a), 123);
1155 cpl_test_eq_error(irplib_sdp_spectrum_copy_prov(a, 1, plist,
"TEST_STRING"),
1157 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1),
"abc");
1158 cpl_test_eq_error(irplib_sdp_spectrum_copy_asson(a, 1, plist,
"TEST_STRING"),
1160 cpl_test_eq_string(irplib_sdp_spectrum_get_asson(a, 1),
"abc");
1161 cpl_test_eq_error(irplib_sdp_spectrum_copy_assoc(a, 1, plist,
"TEST_STRING"),
1163 cpl_test_eq_string(irplib_sdp_spectrum_get_assoc(a, 1),
"abc");
1164 cpl_test_eq_error(irplib_sdp_spectrum_copy_assom(a, 1, plist,
"TEST_STRING"),
1166 cpl_test_eq_string(irplib_sdp_spectrum_get_assom(a, 1),
"abc");
1167 cpl_test_eq_error(irplib_sdp_spectrum_copy_voclass(a, plist,
"TEST_STRING"),
1169 cpl_test_eq_string(irplib_sdp_spectrum_get_voclass(a),
"abc");
1170 cpl_test_eq_error(irplib_sdp_spectrum_copy_vopub(a, plist,
"TEST_STRING"),
1172 cpl_test_eq_string(irplib_sdp_spectrum_get_vopub(a),
"abc");
1173 cpl_test_eq_error(irplib_sdp_spectrum_copy_title(a, plist,
"TEST_STRING"),
1175 cpl_test_eq_string(irplib_sdp_spectrum_get_title(a),
"abc");
1176 cpl_test_eq_error(irplib_sdp_spectrum_copy_object(a, plist,
"TEST_STRING"),
1178 cpl_test_eq_string(irplib_sdp_spectrum_get_object(a),
"abc");
1179 cpl_test_eq_error(irplib_sdp_spectrum_copy_aperture(a, plist,
"TEST_DOUBLE"),
1181 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.34, DBL_EPSILON);
1182 cpl_test_eq_error(irplib_sdp_spectrum_copy_telapse(a, plist,
"TEST_DOUBLE"),
1184 cpl_test_abs(irplib_sdp_spectrum_get_telapse(a), 2.34, DBL_EPSILON);
1185 cpl_test_eq_error(irplib_sdp_spectrum_copy_tmid(a, plist,
"TEST_DOUBLE"),
1187 cpl_test_abs(irplib_sdp_spectrum_get_tmid(a), 2.34, DBL_EPSILON);
1188 cpl_test_eq_error(irplib_sdp_spectrum_copy_specval(a, plist,
"TEST_DOUBLE"),
1190 cpl_test_abs(irplib_sdp_spectrum_get_specval(a), 2.34, DBL_EPSILON);
1191 cpl_test_eq_error(irplib_sdp_spectrum_copy_specbw(a, plist,
"TEST_DOUBLE"),
1193 cpl_test_abs(irplib_sdp_spectrum_get_specbw(a), 2.34, DBL_EPSILON);
1194 cpl_test_eq_error(irplib_sdp_spectrum_copy_extname(a, plist,
"TEST_STRING"),
1196 cpl_test_eq_string(irplib_sdp_spectrum_get_extname(a),
"abc");
1197 cpl_test_eq_error(irplib_sdp_spectrum_copy_inherit(a, plist,
"TEST_BOOL"),
1199 cpl_test_eq(irplib_sdp_spectrum_get_inherit(a), CPL_TRUE);
1200 cpl_test_eq_error(irplib_sdp_spectrum_copy_nelem(a, plist,
"TEST_LONGLONG"),
1202 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 432);
1203 cpl_test_eq_error(irplib_sdp_spectrum_copy_tdmin(a, plist,
"TEST_DOUBLE"),
1205 cpl_test_abs(irplib_sdp_spectrum_get_tdmin(a), 2.34, DBL_EPSILON);
1206 cpl_test_eq_error(irplib_sdp_spectrum_copy_tdmax(a, plist,
"TEST_DOUBLE"),
1208 cpl_test_abs(irplib_sdp_spectrum_get_tdmax(a), 2.34, DBL_EPSILON);
1214 cpl_test_eq_error(irplib_sdp_spectrum_copy_ra(a, plist,
"TEST_STRING"),
1215 CPL_ERROR_TYPE_MISMATCH);
1216 cpl_test_eq_error(irplib_sdp_spectrum_copy_ra(a, plist,
"SOME_KEY"),
1217 CPL_ERROR_DATA_NOT_FOUND);
1218 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodlvl(a, plist,
"TEST_STRING"),
1219 CPL_ERROR_TYPE_MISMATCH);
1220 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodlvl(a, plist,
"SOME_KEY"),
1221 CPL_ERROR_DATA_NOT_FOUND);
1222 cpl_test_eq_error(irplib_sdp_spectrum_copy_procsoft(a, plist,
"TEST_INT"),
1223 CPL_ERROR_TYPE_MISMATCH);
1224 cpl_test_eq_error(irplib_sdp_spectrum_copy_procsoft(a, plist,
"SOME_KEY"),
1225 CPL_ERROR_DATA_NOT_FOUND);
1226 cpl_test_eq_error(irplib_sdp_spectrum_copy_obid(a, 1, plist,
"TEST_STRING"),
1227 CPL_ERROR_TYPE_MISMATCH);
1228 cpl_test_eq_error(irplib_sdp_spectrum_copy_obid(a, 1, plist,
"SOME_KEY"),
1229 CPL_ERROR_DATA_NOT_FOUND);
1230 cpl_test_eq_error(irplib_sdp_spectrum_copy_mepoch(a, plist,
"TEST_STRING"),
1231 CPL_ERROR_TYPE_MISMATCH);
1232 cpl_test_eq_error(irplib_sdp_spectrum_copy_mepoch(a, plist,
"SOME_KEY"),
1233 CPL_ERROR_DATA_NOT_FOUND);
1234 cpl_test_eq_error(irplib_sdp_spectrum_copy_prov(a, 1, plist,
"TEST_INT"),
1235 CPL_ERROR_TYPE_MISMATCH);
1236 cpl_test_eq_error(irplib_sdp_spectrum_copy_prov(a, 1, plist,
"SOME_KEY"),
1237 CPL_ERROR_DATA_NOT_FOUND);
1238 cpl_test_eq_error(irplib_sdp_spectrum_copy_nelem(a, plist,
"TEST_STRING"),
1239 CPL_ERROR_TYPE_MISMATCH);
1240 cpl_test_eq_error(irplib_sdp_spectrum_copy_nelem(a, plist,
"SOME_KEY"),
1241 CPL_ERROR_DATA_NOT_FOUND);
1243 irplib_sdp_spectrum_delete(a);
1244 cpl_propertylist_delete(plist);
1245 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
1249 static int test_column_copy_update_functions(
void)
1251 const cpl_array *testdata;
1252 int valuesA[2] = {678, 890};
1253 int valuesD[2] = {345, 765};
1255 cpl_table *table = cpl_table_new(1);
1256 cpl_propertylist *plist = cpl_propertylist_new();
1258 cpl_test_assert(table != NULL);
1259 cpl_test_assert(a != NULL);
1263 cpl_test_assert(cpl_table_new_column_array(table,
"A", CPL_TYPE_INT, 2)
1265 cpl_test_assert(cpl_table_set_column_unit(table,
"A",
"x")
1267 cpl_test_assert(cpl_table_set_column_format(table,
"A",
"%d")
1269 data = cpl_array_wrap_int(valuesA, 2);
1270 cpl_test_assert(data != NULL);
1271 cpl_test_assert(cpl_table_set_array(table,
"A", 0, data)
1273 cpl_array_unwrap(data);
1274 cpl_test_assert(cpl_table_new_column(table,
"B", CPL_TYPE_DOUBLE)
1276 cpl_test_assert(cpl_table_new_column(table,
"C", CPL_TYPE_STRING)
1279 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table,
"A"),
1281 cpl_test(irplib_sdp_spectrum_has_column(a,
"A"));
1282 cpl_test(! irplib_sdp_spectrum_has_column(a,
"B"));
1283 cpl_test(! irplib_sdp_spectrum_has_column(a,
"C"));
1284 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
1285 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1286 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1287 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
1288 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1289 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a,
"A"));
1290 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
1291 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a,
"A"));
1292 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
1294 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_regexp(a, table,
"A|B", 0),
1296 cpl_test(irplib_sdp_spectrum_has_column(a,
"A"));
1297 cpl_test(irplib_sdp_spectrum_has_column(a,
"B"));
1298 cpl_test(! irplib_sdp_spectrum_has_column(a,
"C"));
1299 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 2);
1300 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1301 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1302 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"B"),
"");
1303 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"B"),
"");
1304 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
1305 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"B"), CPL_ERROR_NONE);
1306 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1308 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_regexp(a, table,
"A|B", 1),
1310 cpl_test(! irplib_sdp_spectrum_has_column(a,
"A"));
1311 cpl_test(! irplib_sdp_spectrum_has_column(a,
"B"));
1312 cpl_test(irplib_sdp_spectrum_has_column(a,
"C"));
1313 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
1314 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"C"),
"");
1315 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"C"),
"");
1316 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"C"), CPL_ERROR_NONE);
1317 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1321 cpl_test_assert(cpl_propertylist_append_string(plist,
"TS",
"abc")
1324 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table,
"A"),
1326 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1327 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1328 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1329 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1330 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
1331 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_unit(a,
"A", plist,
"TS"),
1333 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"abc");
1334 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1335 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1336 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1337 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
1338 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
1339 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1341 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table,
"A"),
1343 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1344 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1345 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1346 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1347 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
1348 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_tutyp(a,
"A", plist,
"TS"),
1350 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1351 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1352 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"abc");
1353 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1354 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
1355 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
1356 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1358 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table,
"A"),
1360 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1361 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1362 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1363 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1364 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
1365 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_tucd(a,
"A", plist,
"TS"),
1367 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1368 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1369 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1370 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"abc");
1371 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
1372 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
1373 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1375 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table,
"A"),
1377 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1378 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1379 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1380 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1381 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a,
"A"));
1382 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_tcomm(a,
"A", plist,
"TS"),
1384 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1385 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1386 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1387 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1388 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tcomm(a,
"A"),
"abc");
1389 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
1390 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1394 cpl_test_assert(cpl_table_new_column_array(table,
"D", CPL_TYPE_INT, 2)
1396 cpl_test_assert(cpl_table_set_column_unit(table,
"D",
"y")
1398 cpl_test_assert(cpl_table_set_column_format(table,
"D",
"%5d")
1400 data = cpl_array_wrap_int(valuesD, 2);
1401 cpl_test_assert(data != NULL);
1402 cpl_test_assert(cpl_table_set_array(table,
"D", 0, data)
1404 cpl_array_unwrap(data);
1405 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table,
"A"),
1408 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a,
"A", table,
"D",
1409 IRPLIB_COLUMN_UNIT),
1411 cpl_test(irplib_sdp_spectrum_has_column(a,
"A"));
1412 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
1413 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"y");
1414 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1415 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1416 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1417 testdata = irplib_sdp_spectrum_get_column_data(a,
"A");
1418 cpl_test_nonnull(data);
1419 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesA[0]);
1420 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesA[1]);
1421 cpl_test_eq_error(irplib_sdp_spectrum_set_column_unit(a,
"A",
"x"),
1424 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a,
"A", table,
"D",
1425 IRPLIB_COLUMN_FORMAT),
1427 cpl_test(irplib_sdp_spectrum_has_column(a,
"A"));
1428 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
1429 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1430 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%5d");
1431 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1432 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1433 testdata = irplib_sdp_spectrum_get_column_data(a,
"A");
1434 cpl_test_nonnull(data);
1435 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesA[0]);
1436 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesA[1]);
1437 cpl_test_eq_error(irplib_sdp_spectrum_set_column_format(a,
"A",
"%d"),
1440 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a,
"A", table,
"D",
1441 IRPLIB_COLUMN_DATA),
1443 cpl_test(irplib_sdp_spectrum_has_column(a,
"A"));
1444 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
1445 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"x");
1446 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%d");
1447 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1448 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1449 testdata = irplib_sdp_spectrum_get_column_data(a,
"A");
1450 cpl_test_nonnull(data);
1451 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesD[0]);
1452 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesD[1]);
1455 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a,
"A"), CPL_ERROR_NONE);
1456 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
1457 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a,
"A", table,
"D",
1458 IRPLIB_COLUMN_DATA),
1460 cpl_test(irplib_sdp_spectrum_has_column(a,
"A"));
1461 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
1462 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a,
"A"),
"y");
1463 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a,
"A"),
"%5d");
1464 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"");
1465 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"");
1466 testdata = irplib_sdp_spectrum_get_column_data(a,
"A");
1467 cpl_test_nonnull(data);
1468 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesD[0]);
1469 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesD[1]);
1471 irplib_sdp_spectrum_delete(a);
1472 cpl_propertylist_delete(plist);
1473 cpl_table_delete(table);
1474 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
1478 static int test_generic_copy_functions(
void)
1482 const cpl_property *p;
1483 cpl_propertylist *plist = cpl_propertylist_new();
1485 cpl_test_assert(plist != NULL);
1486 cpl_test_assert(a != NULL);
1488 cpl_test_assert(cpl_propertylist_append_bool(plist,
"M_EPOCH", CPL_TRUE)
1490 cpl_test_assert(cpl_propertylist_append_int(plist,
"PRODLVL", 123)
1492 cpl_test_assert(cpl_propertylist_append_int(plist,
"OBID1", 234)
1494 cpl_test_assert(cpl_propertylist_append_int(plist,
"OBID2", 345)
1496 cpl_test_assert(cpl_propertylist_append_long_long(plist,
"NELEM", 456)
1498 cpl_test_assert(cpl_propertylist_append_double(plist,
"EXPTIME", 1.35)
1500 cpl_test_assert(cpl_propertylist_append_string(plist,
"PROCSOFT",
"abc")
1502 cpl_test_assert(cpl_propertylist_append_string(plist,
"PROV1",
"bcd")
1504 cpl_test_assert(cpl_propertylist_append_string(plist,
"PROV2",
"cde")
1506 cpl_test_assert(cpl_propertylist_append_string(plist,
"TUTYP1",
"def")
1508 cpl_test_assert(cpl_propertylist_append_string(plist,
"TUTYP2",
"efg")
1510 cpl_test_assert(cpl_propertylist_append_string(plist,
"TUCD1",
"fgh")
1512 cpl_test_assert(cpl_propertylist_append_string(plist,
"TUCD2",
"ghi")
1514 cpl_test_assert(cpl_propertylist_append_double(plist,
"APERTURE", 2.46)
1516 cpl_test_assert(cpl_propertylist_append_double(plist,
"WAVELMIN", 3.57)
1519 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"M_EPOCH"),
1521 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
1522 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"PRODLVL"),
1524 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
1525 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"OBID1"),
1527 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"OBID2"),
1529 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
1530 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
1531 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"EXPTIME"),
1533 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
1534 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"PROCSOFT"),
1536 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a),
"abc");
1537 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"PROV1"),
1539 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"PROV2"),
1541 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1),
"bcd");
1542 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 2),
"cde");
1545 irplib_sdp_spectrum_add_column(a,
"A", CPL_TYPE_INT,
"s",
"%2d",
"",
"",
1550 irplib_sdp_spectrum_add_column(a,
"B", CPL_TYPE_INT,
"m",
"%5d",
"",
"",
1554 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"TUTYP1"),
1556 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"TUTYP2"),
1558 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"def");
1559 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"B"),
"efg");
1560 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"TUCD1"),
1562 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"TUCD2"),
1564 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"fgh");
1565 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"B"),
"ghi");
1567 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"APERTURE"),
1569 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
1570 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"WAVELMIN"),
1572 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
1573 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist,
"NELEM"),
1575 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
1578 irplib_sdp_spectrum_delete(a);
1579 a = irplib_sdp_spectrum_new();
1581 p = cpl_propertylist_get_property_const(plist,
"M_EPOCH");
1582 cpl_test_assert(p != NULL);
1583 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1584 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
1585 p = cpl_propertylist_get_property_const(plist,
"PRODLVL");
1586 cpl_test_assert(p != NULL);
1587 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1588 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
1589 p = cpl_propertylist_get_property_const(plist,
"OBID1");
1590 cpl_test_assert(p != NULL);
1591 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1592 p = cpl_propertylist_get_property_const(plist,
"OBID2");
1593 cpl_test_assert(p != NULL);
1594 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1595 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
1596 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
1597 p = cpl_propertylist_get_property_const(plist,
"EXPTIME");
1598 cpl_test_assert(p != NULL);
1599 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1600 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
1601 p = cpl_propertylist_get_property_const(plist,
"PROCSOFT");
1602 cpl_test_assert(p != NULL);
1603 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1604 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a),
"abc");
1605 p = cpl_propertylist_get_property_const(plist,
"PROV1");
1606 cpl_test_assert(p != NULL);
1607 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1608 p = cpl_propertylist_get_property_const(plist,
"PROV2");
1609 cpl_test_assert(p != NULL);
1610 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1611 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1),
"bcd");
1612 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 2),
"cde");
1615 irplib_sdp_spectrum_add_column(a,
"A", CPL_TYPE_INT,
"s",
"%2d",
"",
"",
1620 irplib_sdp_spectrum_add_column(a,
"B", CPL_TYPE_INT,
"m",
"%5d",
"",
"",
1624 p = cpl_propertylist_get_property_const(plist,
"TUTYP1");
1625 cpl_test_assert(p != NULL);
1626 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1627 p = cpl_propertylist_get_property_const(plist,
"TUTYP2");
1628 cpl_test_assert(p != NULL);
1629 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1630 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"def");
1631 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"B"),
"efg");
1632 p = cpl_propertylist_get_property_const(plist,
"TUCD1");
1633 cpl_test_assert(p != NULL);
1634 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1635 p = cpl_propertylist_get_property_const(plist,
"TUCD2");
1636 cpl_test_assert(p != NULL);
1637 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1638 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"fgh");
1639 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"B"),
"ghi");
1641 p = cpl_propertylist_get_property_const(plist,
"APERTURE");
1642 cpl_test_assert(p != NULL);
1643 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1644 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
1645 p = cpl_propertylist_get_property_const(plist,
"WAVELMIN");
1646 cpl_test_assert(p != NULL);
1647 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1648 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
1649 p = cpl_propertylist_get_property_const(plist,
"NELEM");
1650 cpl_test_assert(p != NULL);
1651 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
1652 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
1655 irplib_sdp_spectrum_delete(a);
1656 a = irplib_sdp_spectrum_new();
1658 irplib_sdp_spectrum_add_column(a,
"A", CPL_TYPE_INT,
"s",
"%2d",
"",
"",
1663 irplib_sdp_spectrum_add_column(a,
"B", CPL_TYPE_INT,
"m",
"%5d",
"",
"",
1668 cpl_test_eq_error(irplib_sdp_spectrum_copy_property_regexp(a, plist,
1671 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
1672 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
1673 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
1674 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
1675 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
1676 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a),
"abc");
1677 cpl_test_null(irplib_sdp_spectrum_get_prov(a, 1));
1678 cpl_test_null(irplib_sdp_spectrum_get_prov(a, 2));
1679 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"def");
1680 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"B"),
"efg");
1681 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"fgh");
1682 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"B"),
"ghi");
1683 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
1684 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
1685 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
1687 cpl_test_eq_error(irplib_sdp_spectrum_copy_property_regexp(a, plist,
1690 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
1691 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
1692 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
1693 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
1694 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
1695 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a),
"abc");
1696 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1),
"bcd");
1697 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 2),
"cde");
1698 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"A"),
"def");
1699 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a,
"B"),
"efg");
1700 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"A"),
"fgh");
1701 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a,
"B"),
"ghi");
1702 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
1703 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
1704 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
1706 irplib_sdp_spectrum_delete(a);
1707 cpl_propertylist_delete(plist);
1708 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
1728 static cpl_boolean create_file_with_key(cpl_frameset* frames,
1729 const char *filename,
1730 const char *keyword,
1733 cpl_error_code error = CPL_ERROR_NONE;
1734 cpl_frame *frame = cpl_frame_new();
1735 cpl_propertylist *plist = cpl_propertylist_new();
1736 if (frame == NULL || plist == NULL)
goto cleanup;
1737 if (keyword != NULL) {
1738 error |= cpl_propertylist_append_string(plist, keyword, value);
1740 error |= cpl_propertylist_save(plist, filename, CPL_IO_CREATE);
1741 if (error)
goto cleanup;
1742 cpl_propertylist_delete(plist);
1743 error |= cpl_frame_set_filename(frame, filename);
1744 error |= cpl_frame_set_tag(frame,
"RAW");
1745 error |= cpl_frame_set_group(frame, CPL_FRAME_GROUP_RAW);
1746 error |= cpl_frame_set_level(frame, CPL_FRAME_LEVEL_FINAL);
1747 error |= cpl_frameset_insert(frames, frame);
1748 if (error)
goto cleanup;
1752 cpl_frame_delete(frame);
1753 cpl_propertylist_delete(plist);
1758 static int test_append_provenance(
void)
1760 cpl_error_code error;
1761 const char *filename1 =
"dummy_raw_input1_for_prov_test.fits";
1762 const char *filename2 =
"dummy_raw_input2_for_prov_test.fits";
1763 const char *filename3 =
"dummy_raw_input3_for_prov_test.fits";
1764 cpl_frameset *frames = cpl_frameset_new();
1766 cpl_test_assert(frames != NULL);
1767 cpl_test_assert(spec != NULL);
1773 cpl_test_assert(create_file_with_key(frames, filename1,
"ARCFILE",
"fileA"));
1774 cpl_test_assert(create_file_with_key(frames, filename2,
"ORIGFILE",
"fileB"));
1775 cpl_test_assert(create_file_with_key(frames, filename3, NULL, NULL));
1776 cpl_test_eq(cpl_frameset_get_size(frames), 3);
1780 error = irplib_sdp_spectrum_append_prov(spec, 2, frames);
1781 cpl_test_error(CPL_ERROR_NONE);
1782 cpl_test_eq_error(error, CPL_ERROR_NONE);
1783 cpl_test_eq(irplib_sdp_spectrum_count_prov(spec),
1784 cpl_frameset_get_size(frames));
1785 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(spec, 2),
"fileA");
1786 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(spec, 3),
"fileB");
1787 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(spec, 4), filename3);
1790 if (cpl_test_get_failed() == 0) {
1791 (void)
remove(filename1);
1792 (void)
remove(filename2);
1793 (void)
remove(filename3);
1795 irplib_sdp_spectrum_delete(spec);
1796 cpl_frameset_delete(frames);
1797 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
int main(void)
Various tests of low-level library functions.
struct _irplib_sdp_spectrum_ irplib_sdp_spectrum
Data type for a Science Data Product 1D spectrum.