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 #include <cpl_test.h>
00025 #include <stdio.h>
00026 #include <math.h>
00027 #include <float.h>
00028 #include <errno.h>
00029 #include "irplib_sdp_spectrum.h"
00030
00031
00032
00033
00034
00035 static void fill_keywords(irplib_sdp_spectrum *a);
00036 static int test_get_set_functions(void);
00037 static int test_copy_functions(void);
00038 static int test_count_functions(void);
00039 static int test_column_functions(void);
00040 static int test_equal_function(void);
00041 static int test_io_functions(void);
00042 static int test_column_copy_update_functions(void);
00043 static int test_generic_copy_functions(void);
00044 static int test_append_provenance(void);
00045
00046 static cpl_boolean create_file_with_key(cpl_frameset* frames,
00047 const char *filename,
00048 const char *keyword,
00049 const char *value);
00050
00051
00052
00053
00054 int main(void)
00055 {
00056 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
00057
00058 cpl_test_assert(test_get_set_functions() == EXIT_SUCCESS);
00059 cpl_test_assert(test_copy_functions() == EXIT_SUCCESS);
00060 cpl_test_assert(test_count_functions() == EXIT_SUCCESS);
00061 cpl_test_assert(test_column_functions() == EXIT_SUCCESS);
00062 cpl_test_assert(test_equal_function() == EXIT_SUCCESS);
00063 cpl_test_assert(test_io_functions() == EXIT_SUCCESS);
00064 cpl_test_assert(test_column_copy_update_functions() == EXIT_SUCCESS);
00065 cpl_test_assert(test_generic_copy_functions() == EXIT_SUCCESS);
00066 cpl_test_assert(test_append_provenance() == EXIT_SUCCESS);
00067
00068 return cpl_test_end(0);
00069 }
00070
00071
00072 static void fill_keywords(irplib_sdp_spectrum *a)
00073 {
00074 cpl_test_eq_error(irplib_sdp_spectrum_set_ra(a, 1.23), CPL_ERROR_NONE);
00075 cpl_test_eq_error(irplib_sdp_spectrum_set_dec(a, 2.34), CPL_ERROR_NONE);
00076 cpl_test_eq_error(irplib_sdp_spectrum_set_exptime(a, 3.45), CPL_ERROR_NONE);
00077 cpl_test_eq_error(irplib_sdp_spectrum_set_texptime(a, 5.34), CPL_ERROR_NONE);
00078 cpl_test_eq_error(irplib_sdp_spectrum_set_timesys(a, "gmt"), CPL_ERROR_NONE);
00079 cpl_test_eq_error(irplib_sdp_spectrum_set_mjdobs(a, 4.56), CPL_ERROR_NONE);
00080 cpl_test_eq_error(irplib_sdp_spectrum_set_mjdend(a, 5.67), CPL_ERROR_NONE);
00081 cpl_test_eq_error(irplib_sdp_spectrum_set_prodlvl(a, 678), CPL_ERROR_NONE);
00082 cpl_test_eq_error(irplib_sdp_spectrum_set_procsoft(a, "abc"), CPL_ERROR_NONE);
00083 cpl_test_eq_error(irplib_sdp_spectrum_set_prodcatg(a, "bcd"), CPL_ERROR_NONE);
00084 cpl_test_eq_error(irplib_sdp_spectrum_set_origin(a, "cde"), CPL_ERROR_NONE);
00085 cpl_test_eq_error(irplib_sdp_spectrum_set_extobj(a, CPL_TRUE), CPL_ERROR_NONE);
00086 cpl_test_eq_error(irplib_sdp_spectrum_set_dispelem(a, "def"), CPL_ERROR_NONE);
00087 cpl_test_eq_error(irplib_sdp_spectrum_set_specsys(a, "efg"), CPL_ERROR_NONE);
00088 cpl_test_eq_error(irplib_sdp_spectrum_set_progid(a, "fgh"), CPL_ERROR_NONE);
00089 cpl_test_eq_error(irplib_sdp_spectrum_set_obid(a, 1, 789), CPL_ERROR_NONE);
00090 cpl_test_eq_error(irplib_sdp_spectrum_set_mepoch(a, CPL_TRUE), CPL_ERROR_NONE);
00091 cpl_test_eq_error(irplib_sdp_spectrum_set_obstech(a, "ghi"), CPL_ERROR_NONE);
00092 cpl_test_eq_error(irplib_sdp_spectrum_set_fluxcal(a, "hij"), CPL_ERROR_NONE);
00093 cpl_test_eq_error(irplib_sdp_spectrum_set_contnorm(a, CPL_TRUE), CPL_ERROR_NONE);
00094 cpl_test_eq_error(irplib_sdp_spectrum_set_wavelmin(a, 8.90), CPL_ERROR_NONE);
00095 cpl_test_eq_error(irplib_sdp_spectrum_set_wavelmax(a, 9.01), CPL_ERROR_NONE);
00096 cpl_test_eq_error(irplib_sdp_spectrum_set_specbin(a, 10.12), CPL_ERROR_NONE);
00097 cpl_test_eq_error(irplib_sdp_spectrum_set_totflux(a, CPL_TRUE), CPL_ERROR_NONE);
00098 cpl_test_eq_error(irplib_sdp_spectrum_set_fluxerr(a, 432.19), CPL_ERROR_NONE);
00099 cpl_test_eq_error(irplib_sdp_spectrum_set_referenc(a, "ijk"), CPL_ERROR_NONE);
00100 cpl_test_eq_error(irplib_sdp_spectrum_set_specres(a, 23.45), CPL_ERROR_NONE);
00101 cpl_test_eq_error(irplib_sdp_spectrum_set_specerr(a, 34.56), CPL_ERROR_NONE);
00102 cpl_test_eq_error(irplib_sdp_spectrum_set_specsye(a, 45.67), CPL_ERROR_NONE);
00103 cpl_test_eq_error(irplib_sdp_spectrum_set_lamnlin(a, 5678), CPL_ERROR_NONE);
00104 cpl_test_eq_error(irplib_sdp_spectrum_set_lamrms(a, 67.89), CPL_ERROR_NONE);
00105 cpl_test_eq_error(irplib_sdp_spectrum_set_gain(a, 78.90), CPL_ERROR_NONE);
00106 cpl_test_eq_error(irplib_sdp_spectrum_set_detron(a, 89.01), CPL_ERROR_NONE);
00107 cpl_test_eq_error(irplib_sdp_spectrum_set_effron(a, 90.12), CPL_ERROR_NONE);
00108 cpl_test_eq_error(irplib_sdp_spectrum_set_snr(a, 93.75), CPL_ERROR_NONE);
00109 cpl_test_eq_error(irplib_sdp_spectrum_set_ncombine(a, 12345), CPL_ERROR_NONE);
00110 cpl_test_eq_error(irplib_sdp_spectrum_set_voclass(a, "jkl"), CPL_ERROR_NONE);
00111 cpl_test_eq_error(irplib_sdp_spectrum_set_vopub(a, "klm"), CPL_ERROR_NONE);
00112 cpl_test_eq_error(irplib_sdp_spectrum_set_title(a, "lmn"), CPL_ERROR_NONE);
00113 cpl_test_eq_error(irplib_sdp_spectrum_set_object(a, "mno"), CPL_ERROR_NONE);
00114 cpl_test_eq_error(irplib_sdp_spectrum_set_aperture(a, 234.56), CPL_ERROR_NONE);
00115 cpl_test_eq_error(irplib_sdp_spectrum_set_telapse(a, 345.67), CPL_ERROR_NONE);
00116 cpl_test_eq_error(irplib_sdp_spectrum_set_tmid(a, 456.78), CPL_ERROR_NONE);
00117 cpl_test_eq_error(irplib_sdp_spectrum_set_specval(a, 567.89), CPL_ERROR_NONE);
00118 cpl_test_eq_error(irplib_sdp_spectrum_set_specbw(a, 678.90), CPL_ERROR_NONE);
00119 cpl_test_eq_error(irplib_sdp_spectrum_set_extname(a, "nop"), CPL_ERROR_NONE);
00120 cpl_test_eq_error(irplib_sdp_spectrum_set_inherit(a, CPL_TRUE), CPL_ERROR_NONE);
00121 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 78901), CPL_ERROR_NONE);
00122 cpl_test_eq_error(irplib_sdp_spectrum_set_tdmin(a, 890.12), CPL_ERROR_NONE);
00123 cpl_test_eq_error(irplib_sdp_spectrum_set_tdmax(a, 901.23), CPL_ERROR_NONE);
00124 cpl_test_eq_error(irplib_sdp_spectrum_set_prov(a, 1, "opq"), CPL_ERROR_NONE);
00125 cpl_test_eq_error(irplib_sdp_spectrum_set_prov(a, 2, "pqr"), CPL_ERROR_NONE);
00126 cpl_test_eq_error(irplib_sdp_spectrum_set_asson(a, 1, "qrs"), CPL_ERROR_NONE);
00127 cpl_test_eq_error(irplib_sdp_spectrum_set_assoc(a, 1, "rst"), CPL_ERROR_NONE);
00128 cpl_test_eq_error(irplib_sdp_spectrum_set_assom(a, 1, "stu"), CPL_ERROR_NONE);
00129 }
00130
00131
00132 static int test_get_set_functions(void)
00133 {
00134
00135 irplib_sdp_spectrum *a = irplib_sdp_spectrum_new();
00136 irplib_sdp_spectrum *b;
00137 cpl_test_assert(a != NULL);
00138 fill_keywords(a);
00139
00140
00141
00142 b = irplib_sdp_spectrum_duplicate(a);
00143 cpl_test_assert(b != NULL);
00144 cpl_test_abs(irplib_sdp_spectrum_get_ra(b), 1.23, DBL_EPSILON);
00145 cpl_test_abs(irplib_sdp_spectrum_get_dec(b), 2.34, DBL_EPSILON);
00146 cpl_test_abs(irplib_sdp_spectrum_get_exptime(b), 3.45, DBL_EPSILON);
00147 cpl_test_abs(irplib_sdp_spectrum_get_texptime(b), 5.34, DBL_EPSILON);
00148 cpl_test_eq_string(irplib_sdp_spectrum_get_timesys(b), "gmt");
00149 cpl_test_abs(irplib_sdp_spectrum_get_mjdobs(b), 4.56, DBL_EPSILON);
00150 cpl_test_abs(irplib_sdp_spectrum_get_mjdend(b), 5.67, DBL_EPSILON);
00151 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(b), 678);
00152 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(b), "abc");
00153 cpl_test_eq_string(irplib_sdp_spectrum_get_prodcatg(b), "bcd");
00154 cpl_test_eq_string(irplib_sdp_spectrum_get_origin(b), "cde");
00155 cpl_test_eq(irplib_sdp_spectrum_get_extobj(b), CPL_TRUE);
00156 cpl_test_eq_string(irplib_sdp_spectrum_get_dispelem(b), "def");
00157 cpl_test_eq_string(irplib_sdp_spectrum_get_specsys(b), "efg");
00158 cpl_test_eq_string(irplib_sdp_spectrum_get_progid(b), "fgh");
00159 cpl_test_eq(irplib_sdp_spectrum_get_obid(b, 1), 789);
00160 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(b), CPL_TRUE);
00161 cpl_test_eq_string(irplib_sdp_spectrum_get_obstech(b), "ghi");
00162 cpl_test_eq_string(irplib_sdp_spectrum_get_fluxcal(b), "hij");
00163 cpl_test_eq(irplib_sdp_spectrum_get_contnorm(b), CPL_TRUE);
00164 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(b), 8.90, DBL_EPSILON);
00165 cpl_test_abs(irplib_sdp_spectrum_get_wavelmax(b), 9.01, DBL_EPSILON);
00166 cpl_test_abs(irplib_sdp_spectrum_get_specbin(b), 10.12, DBL_EPSILON);
00167 cpl_test_eq(irplib_sdp_spectrum_get_totflux(b), CPL_TRUE);
00168 cpl_test_abs(irplib_sdp_spectrum_get_fluxerr(b), 432.19, DBL_EPSILON);
00169 cpl_test_eq_string(irplib_sdp_spectrum_get_referenc(b), "ijk");
00170 cpl_test_abs(irplib_sdp_spectrum_get_specres(b), 23.45, DBL_EPSILON);
00171 cpl_test_abs(irplib_sdp_spectrum_get_specerr(b), 34.56, DBL_EPSILON);
00172 cpl_test_abs(irplib_sdp_spectrum_get_specsye(b), 45.67, DBL_EPSILON);
00173 cpl_test_eq(irplib_sdp_spectrum_get_lamnlin(b), 5678);
00174 cpl_test_abs(irplib_sdp_spectrum_get_lamrms(b), 67.89, DBL_EPSILON);
00175 cpl_test_abs(irplib_sdp_spectrum_get_gain(b), 78.90, DBL_EPSILON);
00176 cpl_test_abs(irplib_sdp_spectrum_get_detron(b), 89.01, DBL_EPSILON);
00177 cpl_test_abs(irplib_sdp_spectrum_get_effron(b), 90.12, DBL_EPSILON);
00178 cpl_test_abs(irplib_sdp_spectrum_get_snr(b), 93.75, DBL_EPSILON);
00179 cpl_test_eq(irplib_sdp_spectrum_get_ncombine(b), 12345);
00180 cpl_test_eq_string(irplib_sdp_spectrum_get_voclass(b), "jkl");
00181 cpl_test_eq_string(irplib_sdp_spectrum_get_vopub(b), "klm");
00182 cpl_test_eq_string(irplib_sdp_spectrum_get_title(b), "lmn");
00183 cpl_test_eq_string(irplib_sdp_spectrum_get_object(b), "mno");
00184 cpl_test_abs(irplib_sdp_spectrum_get_aperture(b), 234.56, DBL_EPSILON);
00185 cpl_test_abs(irplib_sdp_spectrum_get_telapse(b), 345.67, DBL_EPSILON);
00186 cpl_test_abs(irplib_sdp_spectrum_get_tmid(b), 456.78, DBL_EPSILON);
00187 cpl_test_abs(irplib_sdp_spectrum_get_specval(b), 567.89, DBL_EPSILON);
00188 cpl_test_abs(irplib_sdp_spectrum_get_specbw(b), 678.90, DBL_EPSILON);
00189 cpl_test_eq_string(irplib_sdp_spectrum_get_extname(b), "nop");
00190 cpl_test_eq(irplib_sdp_spectrum_get_inherit(b), CPL_TRUE);
00191 cpl_test_eq(irplib_sdp_spectrum_get_nelem(b), 78901);
00192 cpl_test_abs(irplib_sdp_spectrum_get_tdmin(b), 890.12, DBL_EPSILON);
00193 cpl_test_abs(irplib_sdp_spectrum_get_tdmax(b), 901.23, DBL_EPSILON);
00194 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(b, 1), "opq");
00195 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(b, 2), "pqr");
00196 cpl_test_eq_string(irplib_sdp_spectrum_get_asson(b, 1), "qrs");
00197 cpl_test_eq_string(irplib_sdp_spectrum_get_assoc(b, 1), "rst");
00198 cpl_test_eq_string(irplib_sdp_spectrum_get_assom(b, 1), "stu");
00199
00200
00201 cpl_test_eq_error(irplib_sdp_spectrum_reset_ra(b), CPL_ERROR_NONE);
00202 cpl_test_error(CPL_ERROR_NONE);
00203 cpl_test_eq_error(irplib_sdp_spectrum_reset_dec(b), CPL_ERROR_NONE);
00204 cpl_test_error(CPL_ERROR_NONE);
00205 cpl_test_eq_error(irplib_sdp_spectrum_reset_exptime(b), CPL_ERROR_NONE);
00206 cpl_test_error(CPL_ERROR_NONE);
00207 cpl_test_eq_error(irplib_sdp_spectrum_reset_texptime(b), CPL_ERROR_NONE);
00208 cpl_test_error(CPL_ERROR_NONE);
00209 cpl_test_eq_error(irplib_sdp_spectrum_reset_timesys(b), CPL_ERROR_NONE);
00210 cpl_test_error(CPL_ERROR_NONE);
00211 cpl_test_eq_error(irplib_sdp_spectrum_reset_mjdobs(b), CPL_ERROR_NONE);
00212 cpl_test_error(CPL_ERROR_NONE);
00213 cpl_test_eq_error(irplib_sdp_spectrum_reset_mjdend(b), CPL_ERROR_NONE);
00214 cpl_test_error(CPL_ERROR_NONE);
00215 cpl_test_eq_error(irplib_sdp_spectrum_reset_prodlvl(b), CPL_ERROR_NONE);
00216 cpl_test_error(CPL_ERROR_NONE);
00217 cpl_test_eq_error(irplib_sdp_spectrum_reset_procsoft(b), CPL_ERROR_NONE);
00218 cpl_test_error(CPL_ERROR_NONE);
00219 cpl_test_eq_error(irplib_sdp_spectrum_reset_prodcatg(b), CPL_ERROR_NONE);
00220 cpl_test_error(CPL_ERROR_NONE);
00221 cpl_test_eq_error(irplib_sdp_spectrum_reset_origin(b), CPL_ERROR_NONE);
00222 cpl_test_error(CPL_ERROR_NONE);
00223 cpl_test_eq_error(irplib_sdp_spectrum_reset_extobj(b), CPL_ERROR_NONE);
00224 cpl_test_error(CPL_ERROR_NONE);
00225 cpl_test_eq_error(irplib_sdp_spectrum_reset_dispelem(b), CPL_ERROR_NONE);
00226 cpl_test_error(CPL_ERROR_NONE);
00227 cpl_test_eq_error(irplib_sdp_spectrum_reset_specsys(b), CPL_ERROR_NONE);
00228 cpl_test_error(CPL_ERROR_NONE);
00229 cpl_test_eq_error(irplib_sdp_spectrum_reset_progid(b), CPL_ERROR_NONE);
00230 cpl_test_error(CPL_ERROR_NONE);
00231 cpl_test_eq_error(irplib_sdp_spectrum_reset_obid(b, 1), CPL_ERROR_NONE);
00232 cpl_test_error(CPL_ERROR_NONE);
00233 cpl_test_eq_error(irplib_sdp_spectrum_reset_mepoch(b), CPL_ERROR_NONE);
00234 cpl_test_error(CPL_ERROR_NONE);
00235 cpl_test_eq_error(irplib_sdp_spectrum_reset_obstech(b), CPL_ERROR_NONE);
00236 cpl_test_error(CPL_ERROR_NONE);
00237 cpl_test_eq_error(irplib_sdp_spectrum_reset_fluxcal(b), CPL_ERROR_NONE);
00238 cpl_test_error(CPL_ERROR_NONE);
00239 cpl_test_eq_error(irplib_sdp_spectrum_reset_contnorm(b), CPL_ERROR_NONE);
00240 cpl_test_error(CPL_ERROR_NONE);
00241 cpl_test_eq_error(irplib_sdp_spectrum_reset_wavelmin(b), CPL_ERROR_NONE);
00242 cpl_test_error(CPL_ERROR_NONE);
00243 cpl_test_eq_error(irplib_sdp_spectrum_reset_wavelmax(b), CPL_ERROR_NONE);
00244 cpl_test_error(CPL_ERROR_NONE);
00245 cpl_test_eq_error(irplib_sdp_spectrum_reset_specbin(b), CPL_ERROR_NONE);
00246 cpl_test_error(CPL_ERROR_NONE);
00247 cpl_test_eq_error(irplib_sdp_spectrum_reset_totflux(b), CPL_ERROR_NONE);
00248 cpl_test_error(CPL_ERROR_NONE);
00249 cpl_test_eq_error(irplib_sdp_spectrum_reset_fluxerr(b), CPL_ERROR_NONE);
00250 cpl_test_error(CPL_ERROR_NONE);
00251 cpl_test_eq_error(irplib_sdp_spectrum_reset_referenc(b), CPL_ERROR_NONE);
00252 cpl_test_error(CPL_ERROR_NONE);
00253 cpl_test_eq_error(irplib_sdp_spectrum_reset_specres(b), CPL_ERROR_NONE);
00254 cpl_test_error(CPL_ERROR_NONE);
00255 cpl_test_eq_error(irplib_sdp_spectrum_reset_specerr(b), CPL_ERROR_NONE);
00256 cpl_test_error(CPL_ERROR_NONE);
00257 cpl_test_eq_error(irplib_sdp_spectrum_reset_specsye(b), CPL_ERROR_NONE);
00258 cpl_test_error(CPL_ERROR_NONE);
00259 cpl_test_eq_error(irplib_sdp_spectrum_reset_lamnlin(b), CPL_ERROR_NONE);
00260 cpl_test_error(CPL_ERROR_NONE);
00261 cpl_test_eq_error(irplib_sdp_spectrum_reset_lamrms(b), CPL_ERROR_NONE);
00262 cpl_test_error(CPL_ERROR_NONE);
00263 cpl_test_eq_error(irplib_sdp_spectrum_reset_gain(b), CPL_ERROR_NONE);
00264 cpl_test_error(CPL_ERROR_NONE);
00265 cpl_test_eq_error(irplib_sdp_spectrum_reset_detron(b), CPL_ERROR_NONE);
00266 cpl_test_error(CPL_ERROR_NONE);
00267 cpl_test_eq_error(irplib_sdp_spectrum_reset_effron(b), CPL_ERROR_NONE);
00268 cpl_test_error(CPL_ERROR_NONE);
00269 cpl_test_eq_error(irplib_sdp_spectrum_reset_snr(b), CPL_ERROR_NONE);
00270 cpl_test_error(CPL_ERROR_NONE);
00271 cpl_test_eq_error(irplib_sdp_spectrum_reset_ncombine(b), CPL_ERROR_NONE);
00272 cpl_test_error(CPL_ERROR_NONE);
00273 cpl_test_eq_error(irplib_sdp_spectrum_reset_voclass(b), CPL_ERROR_NONE);
00274 cpl_test_error(CPL_ERROR_NONE);
00275 cpl_test_eq_error(irplib_sdp_spectrum_reset_vopub(b), CPL_ERROR_NONE);
00276 cpl_test_error(CPL_ERROR_NONE);
00277 cpl_test_eq_error(irplib_sdp_spectrum_reset_title(b), CPL_ERROR_NONE);
00278 cpl_test_error(CPL_ERROR_NONE);
00279 cpl_test_eq_error(irplib_sdp_spectrum_reset_object(b), CPL_ERROR_NONE);
00280 cpl_test_error(CPL_ERROR_NONE);
00281 cpl_test_eq_error(irplib_sdp_spectrum_reset_aperture(b), CPL_ERROR_NONE);
00282 cpl_test_error(CPL_ERROR_NONE);
00283 cpl_test_eq_error(irplib_sdp_spectrum_reset_telapse(b), CPL_ERROR_NONE);
00284 cpl_test_error(CPL_ERROR_NONE);
00285 cpl_test_eq_error(irplib_sdp_spectrum_reset_tmid(b), CPL_ERROR_NONE);
00286 cpl_test_error(CPL_ERROR_NONE);
00287 cpl_test_eq_error(irplib_sdp_spectrum_reset_specval(b), CPL_ERROR_NONE);
00288 cpl_test_error(CPL_ERROR_NONE);
00289 cpl_test_eq_error(irplib_sdp_spectrum_reset_specbw(b), CPL_ERROR_NONE);
00290 cpl_test_error(CPL_ERROR_NONE);
00291 cpl_test_eq_error(irplib_sdp_spectrum_reset_extname(b), CPL_ERROR_NONE);
00292 cpl_test_error(CPL_ERROR_NONE);
00293 cpl_test_eq_error(irplib_sdp_spectrum_reset_inherit(b), CPL_ERROR_NONE);
00294 cpl_test_error(CPL_ERROR_NONE);
00295 cpl_test_eq_error(irplib_sdp_spectrum_reset_nelem(b), CPL_ERROR_NONE);
00296 cpl_test_error(CPL_ERROR_NONE);
00297 cpl_test_eq_error(irplib_sdp_spectrum_reset_tdmin(b), CPL_ERROR_NONE);
00298 cpl_test_error(CPL_ERROR_NONE);
00299 cpl_test_eq_error(irplib_sdp_spectrum_reset_tdmax(b), CPL_ERROR_NONE);
00300 cpl_test_error(CPL_ERROR_NONE);
00301 cpl_test_eq_error(irplib_sdp_spectrum_reset_prov(b, 1), CPL_ERROR_NONE);
00302 cpl_test_error(CPL_ERROR_NONE);
00303 cpl_test_eq_error(irplib_sdp_spectrum_reset_prov(b, 2), CPL_ERROR_NONE);
00304 cpl_test_error(CPL_ERROR_NONE);
00305 cpl_test_eq_error(irplib_sdp_spectrum_reset_asson(b, 1), CPL_ERROR_NONE);
00306 cpl_test_error(CPL_ERROR_NONE);
00307 cpl_test_eq_error(irplib_sdp_spectrum_reset_assoc(b, 1), CPL_ERROR_NONE);
00308 cpl_test_error(CPL_ERROR_NONE);
00309 cpl_test_eq_error(irplib_sdp_spectrum_reset_assom(b, 1), CPL_ERROR_NONE);
00310 cpl_test_error(CPL_ERROR_NONE);
00311
00312
00313 cpl_test(isnan(irplib_sdp_spectrum_get_ra(b)));
00314 cpl_test(isnan(irplib_sdp_spectrum_get_dec(b)));
00315 cpl_test(isnan(irplib_sdp_spectrum_get_exptime(b)));
00316 cpl_test(isnan(irplib_sdp_spectrum_get_texptime(b)));
00317 cpl_test_null(irplib_sdp_spectrum_get_timesys(b));
00318 cpl_test(isnan(irplib_sdp_spectrum_get_mjdobs(b)));
00319 cpl_test(isnan(irplib_sdp_spectrum_get_mjdend(b)));
00320 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(b), -1);
00321 cpl_test_null(irplib_sdp_spectrum_get_procsoft(b));
00322 cpl_test_null(irplib_sdp_spectrum_get_prodcatg(b));
00323 cpl_test_null(irplib_sdp_spectrum_get_origin(b));
00324 cpl_test_eq(irplib_sdp_spectrum_get_extobj(b), CPL_FALSE);
00325 cpl_test_null(irplib_sdp_spectrum_get_dispelem(b));
00326 cpl_test_null(irplib_sdp_spectrum_get_specsys(b));
00327 cpl_test_null(irplib_sdp_spectrum_get_progid(b));
00328 cpl_test_eq(irplib_sdp_spectrum_get_obid(b, 1), -1);
00329 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(b), CPL_FALSE);
00330 cpl_test_null(irplib_sdp_spectrum_get_obstech(b));
00331 cpl_test_null(irplib_sdp_spectrum_get_fluxcal(b));
00332 cpl_test_eq(irplib_sdp_spectrum_get_contnorm(b), CPL_FALSE);
00333 cpl_test(isnan(irplib_sdp_spectrum_get_wavelmin(b)));
00334 cpl_test(isnan(irplib_sdp_spectrum_get_wavelmax(b)));
00335 cpl_test(isnan(irplib_sdp_spectrum_get_specbin(b)));
00336 cpl_test_eq(irplib_sdp_spectrum_get_totflux(b), CPL_FALSE);
00337 cpl_test(isnan(irplib_sdp_spectrum_get_fluxerr(b)));
00338 cpl_test_null(irplib_sdp_spectrum_get_referenc(b));
00339 cpl_test(isnan(irplib_sdp_spectrum_get_specres(b)));
00340 cpl_test(isnan(irplib_sdp_spectrum_get_specerr(b)));
00341 cpl_test(isnan(irplib_sdp_spectrum_get_specsye(b)));
00342 cpl_test_eq(irplib_sdp_spectrum_get_lamnlin(b), -1);
00343 cpl_test(isnan(irplib_sdp_spectrum_get_lamrms(b)));
00344 cpl_test(isnan(irplib_sdp_spectrum_get_gain(b)));
00345 cpl_test(isnan(irplib_sdp_spectrum_get_detron(b)));
00346 cpl_test(isnan(irplib_sdp_spectrum_get_effron(b)));
00347 cpl_test(isnan(irplib_sdp_spectrum_get_snr(b)));
00348 cpl_test_eq(irplib_sdp_spectrum_get_ncombine(b), -1);
00349 cpl_test_null(irplib_sdp_spectrum_get_voclass(b));
00350 cpl_test_null(irplib_sdp_spectrum_get_vopub(b));
00351 cpl_test_null(irplib_sdp_spectrum_get_title(b));
00352 cpl_test_null(irplib_sdp_spectrum_get_object(b));
00353 cpl_test(isnan(irplib_sdp_spectrum_get_aperture(b)));
00354 cpl_test(isnan(irplib_sdp_spectrum_get_telapse(b)));
00355 cpl_test(isnan(irplib_sdp_spectrum_get_tmid(b)));
00356 cpl_test(isnan(irplib_sdp_spectrum_get_specval(b)));
00357 cpl_test(isnan(irplib_sdp_spectrum_get_specbw(b)));
00358 cpl_test_null(irplib_sdp_spectrum_get_extname(b));
00359 cpl_test_eq(irplib_sdp_spectrum_get_inherit(b), CPL_FALSE);
00360 cpl_test_eq(irplib_sdp_spectrum_get_nelem(b), 0);
00361 cpl_test(isnan(irplib_sdp_spectrum_get_tdmin(b)));
00362 cpl_test(isnan(irplib_sdp_spectrum_get_tdmax(b)));
00363 cpl_test_null(irplib_sdp_spectrum_get_prov(b, 1));
00364 cpl_test_null(irplib_sdp_spectrum_get_prov(b, 2));
00365 cpl_test_null(irplib_sdp_spectrum_get_asson(b, 1));
00366 cpl_test_null(irplib_sdp_spectrum_get_assoc(b, 1));
00367 cpl_test_null(irplib_sdp_spectrum_get_assom(b, 1));
00368
00369 irplib_sdp_spectrum_delete(b);
00370 irplib_sdp_spectrum_delete(a);
00371
00372 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
00373 }
00374
00375
00376 static int test_count_functions(void)
00377 {
00378 irplib_sdp_spectrum *a = irplib_sdp_spectrum_new();
00379 cpl_test_assert(a != NULL);
00380
00381
00382
00383 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 0);
00384 irplib_sdp_spectrum_set_obid(a, 1, 1234);
00385 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 1);
00386 irplib_sdp_spectrum_set_obid(a, 2, 2345);
00387 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 2);
00388 irplib_sdp_spectrum_set_obid(a, 3, 3456);
00389 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 3);
00390 irplib_sdp_spectrum_set_obid(a, 901, 9012);
00391 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 4);
00392
00393 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 0);
00394 irplib_sdp_spectrum_set_prov(a, 1, "a");
00395 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 1);
00396 irplib_sdp_spectrum_set_prov(a, 2, "b");
00397 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 2);
00398 irplib_sdp_spectrum_set_prov(a, 3, "c");
00399 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 3);
00400 irplib_sdp_spectrum_set_prov(a, 901, "d");
00401 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 4);
00402
00403 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 0);
00404 irplib_sdp_spectrum_set_asson(a, 1, "a");
00405 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 1);
00406 irplib_sdp_spectrum_set_asson(a, 2, "b");
00407 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 2);
00408 irplib_sdp_spectrum_set_asson(a, 3, "c");
00409 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 3);
00410 irplib_sdp_spectrum_set_asson(a, 901, "d");
00411 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 4);
00412
00413 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 0);
00414 irplib_sdp_spectrum_set_assoc(a, 1, "a");
00415 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 1);
00416 irplib_sdp_spectrum_set_assoc(a, 2, "b");
00417 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 2);
00418 irplib_sdp_spectrum_set_assoc(a, 3, "c");
00419 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 3);
00420 irplib_sdp_spectrum_set_assoc(a, 901, "d");
00421 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 4);
00422
00423 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 0);
00424 irplib_sdp_spectrum_set_assom(a, 1, "a");
00425 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 1);
00426 irplib_sdp_spectrum_set_assom(a, 2, "b");
00427 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 2);
00428 irplib_sdp_spectrum_set_assom(a, 3, "c");
00429 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 3);
00430 irplib_sdp_spectrum_set_assom(a, 901, "d");
00431 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 4);
00432
00433
00434
00435
00436 irplib_sdp_spectrum_reset_obid(a, 901);
00437 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 3);
00438 irplib_sdp_spectrum_reset_obid(a, 2);
00439 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 2);
00440 irplib_sdp_spectrum_reset_obid(a, 1);
00441 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 1);
00442 irplib_sdp_spectrum_reset_obid(a, 3);
00443 cpl_test_eq(irplib_sdp_spectrum_count_obid(a), 0);
00444
00445 irplib_sdp_spectrum_reset_prov(a, 901);
00446 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 3);
00447 irplib_sdp_spectrum_reset_prov(a, 2);
00448 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 2);
00449 irplib_sdp_spectrum_reset_prov(a, 1);
00450 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 1);
00451 irplib_sdp_spectrum_reset_prov(a, 3);
00452 cpl_test_eq(irplib_sdp_spectrum_count_prov(a), 0);
00453
00454 irplib_sdp_spectrum_reset_asson(a, 901);
00455 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 3);
00456 irplib_sdp_spectrum_reset_asson(a, 2);
00457 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 2);
00458 irplib_sdp_spectrum_reset_asson(a, 1);
00459 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 1);
00460 irplib_sdp_spectrum_reset_asson(a, 3);
00461 cpl_test_eq(irplib_sdp_spectrum_count_asson(a), 0);
00462
00463 irplib_sdp_spectrum_reset_assoc(a, 901);
00464 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 3);
00465 irplib_sdp_spectrum_reset_assoc(a, 2);
00466 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 2);
00467 irplib_sdp_spectrum_reset_assoc(a, 1);
00468 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 1);
00469 irplib_sdp_spectrum_reset_assoc(a, 3);
00470 cpl_test_eq(irplib_sdp_spectrum_count_assoc(a), 0);
00471
00472 irplib_sdp_spectrum_reset_assom(a, 901);
00473 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 3);
00474 irplib_sdp_spectrum_reset_assom(a, 2);
00475 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 2);
00476 irplib_sdp_spectrum_reset_assom(a, 1);
00477 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 1);
00478 irplib_sdp_spectrum_reset_assom(a, 3);
00479 cpl_test_eq(irplib_sdp_spectrum_count_assom(a), 0);
00480
00481 irplib_sdp_spectrum_delete(a);
00482 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
00483 }
00484
00485
00486 static int test_column_functions(void)
00487 {
00488 const cpl_array *data;
00489 irplib_sdp_spectrum *a = irplib_sdp_spectrum_new();
00490 cpl_test_assert(a != NULL);
00491
00492 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
00493
00494
00495 cpl_test_eq_error(irplib_sdp_spectrum_new_column(a, "A", CPL_TYPE_INT),
00496 CPL_ERROR_NONE);
00497 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
00498 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 0);
00499 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a, "A"),
00500 CPL_TYPE_INT | CPL_TYPE_POINTER);
00501 cpl_test_null(irplib_sdp_spectrum_get_column_unit(a, "A"));
00502 cpl_test_nonnull(irplib_sdp_spectrum_get_column_format(a, "A"));
00503 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a, "A"));
00504 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a, "A"));
00505 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
00506 cpl_test_null(irplib_sdp_spectrum_get_column_data(a, "A"));
00507 cpl_test_error(CPL_ERROR_NONE);
00508
00509
00510
00511
00512 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a, "A", "x"),
00513 CPL_ERROR_NONE);
00514 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "x");
00515 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a, "A", "y"),
00516 CPL_ERROR_NONE);
00517 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "y");
00518 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a, "A", "z"),
00519 CPL_ERROR_NONE);
00520 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tcomm(a, "A"), "z");
00521
00522 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a, "A", NULL),
00523 CPL_ERROR_NONE);
00524 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a, "A"));
00525 cpl_test_error(CPL_ERROR_NONE);
00526 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a, "A", NULL),
00527 CPL_ERROR_NONE);
00528 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a, "A"));
00529 cpl_test_error(CPL_ERROR_NONE);
00530 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a, "A", NULL),
00531 CPL_ERROR_NONE);
00532 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
00533 cpl_test_error(CPL_ERROR_NONE);
00534
00535
00536 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
00537 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
00538 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a, "A"));
00539 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00540 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a, "A"));
00541 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00542 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
00543 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00544 cpl_test_null(irplib_sdp_spectrum_get_column_data(a, "A"));
00545 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00546
00547
00548 cpl_test_eq_error(
00549 irplib_sdp_spectrum_add_column(a, "A", CPL_TYPE_FLOAT,
00550 NULL, NULL, NULL, NULL, NULL),
00551 CPL_ERROR_NONE
00552 );
00553 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
00554 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 0);
00555 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a, "A"),
00556 CPL_TYPE_FLOAT | CPL_TYPE_POINTER);
00557 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), " ");
00558 cpl_test_nonnull(irplib_sdp_spectrum_get_column_format(a, "A"));
00559 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
00560 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
00561 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
00562 cpl_test_nonnull(irplib_sdp_spectrum_get_column_data(a, "A"));
00563 cpl_test_error(CPL_ERROR_NONE);
00564
00565 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
00566 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
00567
00568
00569 cpl_test_eq_error(
00570 irplib_sdp_spectrum_add_column(a, "A", CPL_TYPE_DOUBLE, "s", "1E",
00571 NULL, NULL, NULL),
00572 CPL_ERROR_NONE
00573 );
00574 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
00575 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 0);
00576 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a, "A"),
00577 CPL_TYPE_DOUBLE | CPL_TYPE_POINTER);
00578 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "s");
00579 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "1E");
00580 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
00581 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
00582 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
00583 cpl_test_nonnull(irplib_sdp_spectrum_get_column_data(a, "A"));
00584
00585
00586 cpl_test_eq_error(irplib_sdp_spectrum_set_column_unit(a, "A", "sec"),
00587 CPL_ERROR_NONE);
00588 cpl_test_eq_error(irplib_sdp_spectrum_set_column_format(a, "A", "2E"),
00589 CPL_ERROR_NONE);
00590 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a, "A", "t1"),
00591 CPL_ERROR_NONE);
00592 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a, "A", "u1"),
00593 CPL_ERROR_NONE);
00594 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a, "A", "cmnt 1"),
00595 CPL_ERROR_NONE);
00596 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "sec");
00597 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "2E");
00598 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "t1");
00599 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "u1");
00600 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tcomm(a, "A"), "cmnt 1");
00601 data = irplib_sdp_spectrum_get_column_data(a, "A");
00602 cpl_test_nonnull(data);
00603 cpl_test_eq(cpl_array_get_size(data), 0);
00604
00605
00606 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 10), CPL_ERROR_NONE);
00607 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 10);
00608 data = irplib_sdp_spectrum_get_column_data(a, "A");
00609 cpl_test_nonnull(data);
00610 cpl_test_eq(cpl_array_get_size(data), 10);
00611
00612
00613 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a, "C"), CPL_TYPE_INVALID);
00614 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00615 cpl_test_null(irplib_sdp_spectrum_get_column_unit(a, "C"));
00616 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00617 cpl_test_null(irplib_sdp_spectrum_get_column_format(a, "C"));
00618 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00619 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a, "C"));
00620 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00621 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a, "C"));
00622 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00623 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "C"));
00624 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00625 cpl_test_null(irplib_sdp_spectrum_get_column_data(a, "C"));
00626 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
00627
00628
00629 cpl_test_eq_error(
00630 irplib_sdp_spectrum_add_column(a, "B", CPL_TYPE_INT, "adu", "1J",
00631 NULL, NULL, NULL),
00632 CPL_ERROR_NONE
00633 );
00634 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 2);
00635 cpl_test_eq(irplib_sdp_spectrum_get_column_type(a, "B"),
00636 CPL_TYPE_INT | CPL_TYPE_POINTER);
00637 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "B"), "adu");
00638 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "B"), "1J");
00639 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "B"), "");
00640 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "B"), "");
00641 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "B"));
00642 data = irplib_sdp_spectrum_get_column_data(a, "B");
00643 cpl_test_nonnull(data);
00644 cpl_test_eq(cpl_array_get_size(data), 10);
00645
00646
00647 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 5), CPL_ERROR_NONE);
00648 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 5);
00649 data = irplib_sdp_spectrum_get_column_data(a, "A");
00650 cpl_test_nonnull(data);
00651 cpl_test_eq(cpl_array_get_size(data), 5);
00652 data = irplib_sdp_spectrum_get_column_data(a, "B");
00653 cpl_test_nonnull(data);
00654 cpl_test_eq(cpl_array_get_size(data), 5);
00655
00656 irplib_sdp_spectrum_delete(a);
00657 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
00658 }
00659
00660
00661 static int test_equal_function(void)
00662 {
00663 cpl_array *data;
00664 double datapoints1[5] = {1.2, 2.3, 3.4, 4.5, 5.6};
00665 double datapoints2[5] = {1.1, 2.4, 5.4, 4.6, 3.6};
00666 irplib_sdp_spectrum *a, *b;
00667
00668
00669
00670
00671 a = irplib_sdp_spectrum_new();
00672 cpl_test_assert(a != NULL);
00673 b = irplib_sdp_spectrum_new();
00674 cpl_test_assert(b != NULL);
00675 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_TRUE);
00676 cpl_test_error(CPL_ERROR_NONE);
00677 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_TRUE);
00678 cpl_test_error(CPL_ERROR_NONE);
00679 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_TRUE);
00680 cpl_test_error(CPL_ERROR_NONE);
00681 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_TRUE);
00682 cpl_test_error(CPL_ERROR_NONE);
00683 irplib_sdp_spectrum_delete(b);
00684 irplib_sdp_spectrum_delete(a);
00685
00686
00687 a = irplib_sdp_spectrum_new();
00688 cpl_test_assert(a != NULL);
00689 fill_keywords(a);
00690 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 5), CPL_ERROR_NONE);
00691 cpl_test_eq_error(
00692 irplib_sdp_spectrum_add_column(a, "A", CPL_TYPE_DOUBLE, "s", "1E",
00693 NULL, NULL, NULL),
00694 CPL_ERROR_NONE
00695 );
00696 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a, "A", "t1"),
00697 CPL_ERROR_NONE);
00698 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a, "A", "u1"),
00699 CPL_ERROR_NONE);
00700 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a, "A", "c1"),
00701 CPL_ERROR_NONE);
00702 data = cpl_array_wrap_double(datapoints1, 5);
00703 cpl_test_nonnull(data);
00704 cpl_test_eq_error(irplib_sdp_spectrum_set_column_data(a, "A", data),
00705 CPL_ERROR_NONE);
00706 cpl_array_unwrap(data);
00707
00708 b = irplib_sdp_spectrum_duplicate(a);
00709 cpl_test_assert(b != NULL);
00710 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_TRUE);
00711 cpl_test_error(CPL_ERROR_NONE);
00712 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_TRUE);
00713 cpl_test_error(CPL_ERROR_NONE);
00714 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_TRUE);
00715 cpl_test_error(CPL_ERROR_NONE);
00716 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_TRUE);
00717 cpl_test_error(CPL_ERROR_NONE);
00718
00719
00720
00721 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(b, "A", "T3"),
00722 CPL_ERROR_NONE);
00723 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_FALSE);
00724 cpl_test_error(CPL_ERROR_NONE);
00725 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_FALSE);
00726 cpl_test_error(CPL_ERROR_NONE);
00727 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_FALSE);
00728 cpl_test_error(CPL_ERROR_NONE);
00729 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_FALSE);
00730 cpl_test_error(CPL_ERROR_NONE);
00731
00732
00733 irplib_sdp_spectrum_delete(b);
00734 b = irplib_sdp_spectrum_duplicate(a);
00735 cpl_test_eq_error(
00736 irplib_sdp_spectrum_add_column(b, "B", CPL_TYPE_DOUBLE, "adu", "1J",
00737 NULL, NULL, NULL),
00738 CPL_ERROR_NONE
00739 );
00740 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_FALSE);
00741 cpl_test_error(CPL_ERROR_NONE);
00742 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_FALSE);
00743 cpl_test_error(CPL_ERROR_NONE);
00744 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_TRUE);
00745 cpl_test_error(CPL_ERROR_NONE);
00746 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_TRUE);
00747 cpl_test_error(CPL_ERROR_NONE);
00748
00749
00750 irplib_sdp_spectrum_delete(b);
00751 b = irplib_sdp_spectrum_duplicate(a);
00752 data = cpl_array_wrap_double(datapoints2, 5);
00753 cpl_test_nonnull(data);
00754 cpl_test_eq_error(irplib_sdp_spectrum_set_column_data(b, "A", data),
00755 CPL_ERROR_NONE);
00756 cpl_array_unwrap(data);
00757 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_FALSE);
00758 cpl_test_error(CPL_ERROR_NONE);
00759 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_FALSE);
00760 cpl_test_error(CPL_ERROR_NONE);
00761 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_FALSE);
00762 cpl_test_error(CPL_ERROR_NONE);
00763 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_FALSE);
00764 cpl_test_error(CPL_ERROR_NONE);
00765
00766
00767
00768 irplib_sdp_spectrum_delete(b);
00769 b = irplib_sdp_spectrum_duplicate(a);
00770 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 4), CPL_ERROR_NONE);
00771 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_FALSE);
00772 cpl_test_error(CPL_ERROR_NONE);
00773 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_FALSE);
00774 cpl_test_error(CPL_ERROR_NONE);
00775 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_TRUE);
00776 cpl_test_error(CPL_ERROR_NONE);
00777 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_TRUE);
00778 cpl_test_error(CPL_ERROR_NONE);
00779
00780
00781 irplib_sdp_spectrum_delete(b);
00782 b = irplib_sdp_spectrum_duplicate(a);
00783 cpl_test_eq_error(irplib_sdp_spectrum_set_dec(b, 999), CPL_ERROR_NONE);
00784 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_FALSE);
00785 cpl_test_error(CPL_ERROR_NONE);
00786 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_FALSE);
00787 cpl_test_error(CPL_ERROR_NONE);
00788 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_FALSE);
00789 cpl_test_error(CPL_ERROR_NONE);
00790 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_FALSE);
00791 cpl_test_error(CPL_ERROR_NONE);
00792
00793
00794 irplib_sdp_spectrum_delete(b);
00795 b = irplib_sdp_spectrum_duplicate(a);
00796 cpl_test_eq_error(irplib_sdp_spectrum_reset_dec(a), CPL_ERROR_NONE);
00797 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_FALSE);
00798 cpl_test_error(CPL_ERROR_NONE);
00799 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_FALSE), CPL_FALSE);
00800 cpl_test_error(CPL_ERROR_NONE);
00801 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_TRUE), CPL_TRUE);
00802 cpl_test_error(CPL_ERROR_NONE);
00803 cpl_test_eq(irplib_sdp_spectrum_equal(b, a, CPL_TRUE), CPL_TRUE);
00804 cpl_test_error(CPL_ERROR_NONE);
00805
00806 irplib_sdp_spectrum_delete(b);
00807 irplib_sdp_spectrum_delete(a);
00808 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
00809 }
00810
00811
00812 static int test_io_functions(void)
00813 {
00814 cpl_frameset *emptyframes = cpl_frameset_new();
00815 cpl_frameset *allframes = cpl_frameset_new();
00816 cpl_propertylist *header = cpl_propertylist_new();
00817 cpl_parameterlist *parlist = cpl_parameterlist_new();
00818 cpl_frameset *usedframes = cpl_frameset_new();
00819 const cpl_frame *inherit = NULL;
00820 const char *recipe = "test_recipe";
00821 cpl_propertylist *applist = cpl_propertylist_new();
00822 cpl_propertylist *tablelist = cpl_propertylist_new();
00823 const char *remregexp = "^(CHECKSUM|DATASUM)$";
00824 const char *pipe_id = "iiinstrument";
00825 const char *dict_id = "TEST_DICT";
00826 cpl_error_code error;
00827 const char *filename1 = "dummy_raw_input1.fits";
00828 const char *filename2 = "dummy_test_sdp_spectrum1.fits";
00829 const char *filename3 = "dummy_test_sdp_spectrum2.fits";
00830 const char *filename4 = "dummy_test_sdp_spectrum3.fits";
00831 cpl_array *data = NULL;
00832 double datapoints[5] = {1.2, 2.3, 3.4, 4.5, 5.6};
00833 irplib_sdp_spectrum *b = NULL;
00834 irplib_sdp_spectrum *a = irplib_sdp_spectrum_new();
00835 const irplib_sdp_spectrum *spectrum = a;
00836 cpl_frame *frame = cpl_frame_new();
00837 cpl_propertylist *plist = cpl_propertylist_new();
00838 cpl_image *image = cpl_image_new(10, 10, CPL_TYPE_FLOAT);
00839
00840 cpl_test_assert(allframes != NULL);
00841 cpl_test_assert(header != NULL);
00842 cpl_test_assert(parlist != NULL);
00843 cpl_test_assert(usedframes != NULL);
00844 cpl_test_assert(applist != NULL);
00845 cpl_test_assert(tablelist != NULL);
00846 cpl_test_assert(a != NULL);
00847
00848
00849 (void) remove(filename1);
00850 (void) remove(filename2);
00851 (void) remove(filename3);
00852 (void) remove(filename4);
00853 errno = 0;
00854
00855
00856 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 2), CPL_ERROR_NONE);
00857 cpl_test_eq_error(
00858 irplib_sdp_spectrum_add_column(a, "A", CPL_TYPE_DOUBLE, "s", "5D",
00859 NULL, NULL, NULL),
00860 CPL_ERROR_NONE
00861 );
00862 cpl_test_eq_error(irplib_sdp_spectrum_save(a, filename2, NULL, NULL),
00863 CPL_ERROR_NONE);
00864 b = irplib_sdp_spectrum_load(filename2);
00865 cpl_test_nonnull(b);
00866 cpl_test_error(CPL_ERROR_NONE);
00867 cpl_test_eq_error(irplib_sdp_spectrum_reset_origin(b), CPL_ERROR_NONE);
00868 cpl_test_eq_error(irplib_sdp_spectrum_reset_prodlvl(b), CPL_ERROR_NONE);
00869 cpl_test_eq_error(irplib_sdp_spectrum_reset_specsys(b), CPL_ERROR_NONE);
00870 cpl_test_eq_error(irplib_sdp_spectrum_reset_fluxerr(b), CPL_ERROR_NONE);
00871 cpl_test_eq_error(irplib_sdp_spectrum_reset_referenc(b), CPL_ERROR_NONE);
00872 cpl_test_eq_error(irplib_sdp_spectrum_reset_voclass(b), CPL_ERROR_NONE);
00873 cpl_test_eq_error(irplib_sdp_spectrum_reset_vopub(b), CPL_ERROR_NONE);
00874 cpl_test_eq_error(irplib_sdp_spectrum_reset_extname(b), CPL_ERROR_NONE);
00875 cpl_test_eq_error(irplib_sdp_spectrum_reset_inherit(b), CPL_ERROR_NONE);
00876 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_TRUE);
00877
00878
00879 fill_keywords(a);
00880 cpl_test_eq_error(irplib_sdp_spectrum_set_nelem(a, 5), CPL_ERROR_NONE);
00881 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tutyp(a, "A", "t1"),
00882 CPL_ERROR_NONE);
00883 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tucd(a, "A", "u1"),
00884 CPL_ERROR_NONE);
00885 cpl_test_eq_error(irplib_sdp_spectrum_set_column_tcomm(a, "A", "c1"),
00886 CPL_ERROR_NONE);
00887
00888 data = cpl_array_wrap_double(datapoints, 5);
00889 cpl_test_nonnull(data);
00890 cpl_test_eq_error(irplib_sdp_spectrum_set_column_data(a, "A", data),
00891 CPL_ERROR_NONE);
00892 cpl_array_unwrap(data);
00893
00894 cpl_test_eq_error(irplib_sdp_spectrum_save(a, filename3, NULL, NULL),
00895 CPL_ERROR_NONE);
00896
00897
00898 irplib_sdp_spectrum_delete(b);
00899 b = irplib_sdp_spectrum_load(filename3);
00900 cpl_test_nonnull(b);
00901 cpl_test_error(CPL_ERROR_NONE);
00902 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_TRUE);
00903
00904
00905
00906 cpl_test_eq_error(cpl_propertylist_append_string(applist, CPL_DFS_PRO_CATG,
00907 "TEST_SPECTRUM"),
00908 CPL_ERROR_NONE);
00909
00910 cpl_test_eq_error(cpl_image_save(image, filename1, CPL_TYPE_FLOAT, plist, CPL_IO_CREATE),
00911 CPL_ERROR_NONE);
00912
00913 cpl_test_eq_error(cpl_frame_set_filename(frame, filename1),
00914 CPL_ERROR_NONE);
00915 cpl_test_eq_error(cpl_frame_set_tag(frame, "RAW_IMAGE"),
00916 CPL_ERROR_NONE);
00917 cpl_test_eq_error(cpl_frame_set_type(frame, CPL_FRAME_TYPE_IMAGE),
00918 CPL_ERROR_NONE);
00919 cpl_test_eq_error(cpl_frame_set_group(frame, CPL_FRAME_GROUP_RAW),
00920 CPL_ERROR_NONE);
00921 cpl_test_eq_error(cpl_frame_set_level(frame, CPL_FRAME_LEVEL_FINAL),
00922 CPL_ERROR_NONE);
00923 cpl_test_eq_error(cpl_frameset_insert(usedframes, frame), CPL_ERROR_NONE);
00924
00925 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00926 inherit, spectrum, recipe, applist, tablelist, remregexp,
00927 pipe_id, dict_id, filename4);
00928 cpl_test_eq_error(error, CPL_ERROR_NONE);
00929
00930 irplib_sdp_spectrum_delete(b);
00931 b = irplib_sdp_spectrum_load(filename4);
00932 cpl_test_nonnull(b);
00933 cpl_test_error(CPL_ERROR_NONE);
00934 cpl_test_eq(irplib_sdp_spectrum_equal(a, b, CPL_FALSE), CPL_TRUE);
00935
00936
00937 error = irplib_dfs_save_spectrum(NULL, header, parlist, usedframes,
00938 inherit, spectrum, recipe, applist, tablelist, remregexp,
00939 pipe_id, dict_id, filename4);
00940 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00941
00942 error = irplib_dfs_save_spectrum(allframes, header, NULL, usedframes,
00943 inherit, spectrum, recipe, applist, tablelist, remregexp,
00944 pipe_id, dict_id, filename4);
00945 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00946
00947 error = irplib_dfs_save_spectrum(allframes, header, parlist, NULL,
00948 inherit, spectrum, recipe, applist, tablelist, remregexp,
00949 pipe_id, dict_id, filename4);
00950 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00951
00952 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00953 inherit, NULL, recipe, applist, tablelist, remregexp,
00954 pipe_id, dict_id, filename4);
00955 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00956
00957 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00958 inherit, spectrum, NULL, applist, tablelist, remregexp,
00959 pipe_id, dict_id, filename4);
00960 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00961
00962 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00963 inherit, spectrum, recipe, NULL, tablelist, remregexp,
00964 pipe_id, dict_id, filename4);
00965 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00966
00967 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00968 inherit, spectrum, recipe, applist, tablelist, remregexp,
00969 NULL, dict_id, filename4);
00970 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00971
00972 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00973 inherit, spectrum, recipe, applist, tablelist, remregexp,
00974 pipe_id, NULL, filename4);
00975 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00976
00977 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00978 inherit, spectrum, recipe, applist, tablelist, remregexp,
00979 pipe_id, dict_id, NULL);
00980 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
00981
00982
00983 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00984 inherit, spectrum, recipe, applist, tablelist, remregexp,
00985 pipe_id, dict_id, "./invalid/");
00986 cpl_test_eq_error(error, CPL_ERROR_FILE_NOT_CREATED);
00987
00988 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
00989 inherit, spectrum, recipe, applist, tablelist, "^^[[((",
00990 pipe_id, dict_id, filename4);
00991 cpl_test_eq_error(error, CPL_ERROR_ILLEGAL_INPUT);
00992
00993 error = irplib_dfs_save_spectrum(allframes, header, parlist, emptyframes,
00994 inherit, spectrum, recipe, applist, tablelist, remregexp,
00995 pipe_id, dict_id, filename4);
00996 cpl_test_eq_error(error, CPL_ERROR_DATA_NOT_FOUND);
00997
00998 cpl_propertylist_empty(applist);
00999 error = irplib_dfs_save_spectrum(allframes, header, parlist, usedframes,
01000 inherit, spectrum, recipe, applist, tablelist, remregexp,
01001 pipe_id, dict_id, filename4);
01002 cpl_test_eq_error(error, CPL_ERROR_DATA_NOT_FOUND);
01003
01004
01005 if (cpl_test_get_failed() == 0) {
01006 (void) remove(filename1);
01007 (void) remove(filename2);
01008 (void) remove(filename3);
01009 (void) remove(filename4);
01010 }
01011 irplib_sdp_spectrum_delete(b);
01012 irplib_sdp_spectrum_delete(a);
01013 cpl_image_delete(image);
01014 cpl_propertylist_delete(plist);
01015 cpl_frameset_delete(emptyframes);
01016 cpl_frameset_delete(allframes);
01017 cpl_propertylist_delete(header);
01018 cpl_parameterlist_delete(parlist);
01019 cpl_frameset_delete(usedframes);
01020 cpl_propertylist_delete(applist);
01021 cpl_propertylist_delete(tablelist);
01022 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
01023 }
01024
01025
01026 static int test_copy_functions(void)
01027 {
01028
01029
01030
01031 cpl_propertylist *plist = cpl_propertylist_new();
01032 irplib_sdp_spectrum *a = irplib_sdp_spectrum_new();
01033 cpl_test_assert(plist != NULL);
01034 cpl_test_assert(a != NULL);
01035
01036 cpl_test_assert(cpl_propertylist_append_bool(plist, "TEST_BOOL", CPL_TRUE)
01037 == CPL_ERROR_NONE);
01038 cpl_test_assert(cpl_propertylist_append_int(plist, "TEST_INT", 123)
01039 == CPL_ERROR_NONE);
01040 cpl_test_assert(cpl_propertylist_append_long_long(plist, "TEST_LONGLONG", 432)
01041 == CPL_ERROR_NONE);
01042 cpl_test_assert(cpl_propertylist_append_double(plist, "TEST_DOUBLE", 2.34)
01043 == CPL_ERROR_NONE);
01044 cpl_test_assert(cpl_propertylist_append_string(plist, "TEST_STRING", "abc")
01045 == CPL_ERROR_NONE);
01046
01047 cpl_test_eq_error(irplib_sdp_spectrum_copy_ra(a, plist, "TEST_DOUBLE"),
01048 CPL_ERROR_NONE);
01049 cpl_test_abs(irplib_sdp_spectrum_get_ra(a), 2.34, DBL_EPSILON);
01050 cpl_test_eq_error(irplib_sdp_spectrum_copy_dec(a, plist, "TEST_DOUBLE"),
01051 CPL_ERROR_NONE);
01052 cpl_test_abs(irplib_sdp_spectrum_get_dec(a), 2.34, DBL_EPSILON);
01053 cpl_test_eq_error(irplib_sdp_spectrum_copy_exptime(a, plist, "TEST_DOUBLE"),
01054 CPL_ERROR_NONE);
01055 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 2.34, DBL_EPSILON);
01056 cpl_test_eq_error(irplib_sdp_spectrum_copy_texptime(a, plist, "TEST_DOUBLE"),
01057 CPL_ERROR_NONE);
01058 cpl_test_abs(irplib_sdp_spectrum_get_texptime(a), 2.34, DBL_EPSILON);
01059 cpl_test_eq_error(irplib_sdp_spectrum_copy_timesys(a, plist, "TEST_STRING"),
01060 CPL_ERROR_NONE);
01061 cpl_test_eq_string(irplib_sdp_spectrum_get_timesys(a), "abc");
01062 cpl_test_eq_error(irplib_sdp_spectrum_copy_mjdobs(a, plist, "TEST_DOUBLE"),
01063 CPL_ERROR_NONE);
01064 cpl_test_abs(irplib_sdp_spectrum_get_mjdobs(a), 2.34, DBL_EPSILON);
01065 cpl_test_eq_error(irplib_sdp_spectrum_copy_mjdend(a, plist, "TEST_DOUBLE"),
01066 CPL_ERROR_NONE);
01067 cpl_test_abs(irplib_sdp_spectrum_get_mjdend(a), 2.34, DBL_EPSILON);
01068 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodlvl(a, plist, "TEST_INT"),
01069 CPL_ERROR_NONE);
01070 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
01071 cpl_test_eq_error(irplib_sdp_spectrum_copy_procsoft(a, plist, "TEST_STRING"),
01072 CPL_ERROR_NONE);
01073 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a), "abc");
01074 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodcatg(a, plist, "TEST_STRING"),
01075 CPL_ERROR_NONE);
01076 cpl_test_eq_string(irplib_sdp_spectrum_get_prodcatg(a), "abc");
01077 cpl_test_eq_error(irplib_sdp_spectrum_copy_origin(a, plist, "TEST_STRING"),
01078 CPL_ERROR_NONE);
01079 cpl_test_eq_string(irplib_sdp_spectrum_get_origin(a), "abc");
01080 cpl_test_eq_error(irplib_sdp_spectrum_copy_extobj(a, plist, "TEST_BOOL"),
01081 CPL_ERROR_NONE);
01082 cpl_test_eq(irplib_sdp_spectrum_get_extobj(a), CPL_TRUE);
01083 cpl_test_eq_error(irplib_sdp_spectrum_copy_dispelem(a, plist, "TEST_STRING"),
01084 CPL_ERROR_NONE);
01085 cpl_test_eq_string(irplib_sdp_spectrum_get_dispelem(a), "abc");
01086 cpl_test_eq_error(irplib_sdp_spectrum_copy_specsys(a, plist, "TEST_STRING"),
01087 CPL_ERROR_NONE);
01088 cpl_test_eq_string(irplib_sdp_spectrum_get_specsys(a), "abc");
01089 cpl_test_eq_error(irplib_sdp_spectrum_copy_progid(a, plist, "TEST_STRING"),
01090 CPL_ERROR_NONE);
01091 cpl_test_eq_string(irplib_sdp_spectrum_get_progid(a), "abc");
01092 cpl_test_eq_error(irplib_sdp_spectrum_copy_obid(a, 1, plist, "TEST_INT"),
01093 CPL_ERROR_NONE);
01094 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 123);
01095 cpl_test_eq_error(irplib_sdp_spectrum_copy_mepoch(a, plist, "TEST_BOOL"),
01096 CPL_ERROR_NONE);
01097 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
01098 cpl_test_eq_error(irplib_sdp_spectrum_copy_obstech(a, plist, "TEST_STRING"),
01099 CPL_ERROR_NONE);
01100 cpl_test_eq_string(irplib_sdp_spectrum_get_obstech(a), "abc");
01101 cpl_test_eq_error(irplib_sdp_spectrum_copy_fluxcal(a, plist, "TEST_STRING"),
01102 CPL_ERROR_NONE);
01103 cpl_test_eq_string(irplib_sdp_spectrum_get_fluxcal(a), "abc");
01104 cpl_test_eq_error(irplib_sdp_spectrum_copy_contnorm(a, plist, "TEST_BOOL"),
01105 CPL_ERROR_NONE);
01106 cpl_test_eq(irplib_sdp_spectrum_get_contnorm(a), CPL_TRUE);
01107 cpl_test_eq_error(irplib_sdp_spectrum_copy_wavelmin(a, plist, "TEST_DOUBLE"),
01108 CPL_ERROR_NONE);
01109 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 2.34, DBL_EPSILON);
01110 cpl_test_eq_error(irplib_sdp_spectrum_copy_wavelmax(a, plist, "TEST_DOUBLE"),
01111 CPL_ERROR_NONE);
01112 cpl_test_abs(irplib_sdp_spectrum_get_wavelmax(a), 2.34, DBL_EPSILON);
01113 cpl_test_eq_error(irplib_sdp_spectrum_copy_specbin(a, plist, "TEST_DOUBLE"),
01114 CPL_ERROR_NONE);
01115 cpl_test_abs(irplib_sdp_spectrum_get_specbin(a), 2.34, DBL_EPSILON);
01116 cpl_test_eq_error(irplib_sdp_spectrum_copy_totflux(a, plist, "TEST_BOOL"),
01117 CPL_ERROR_NONE);
01118 cpl_test_eq(irplib_sdp_spectrum_get_totflux(a), CPL_TRUE);
01119 cpl_test_eq_error(irplib_sdp_spectrum_copy_fluxerr(a, plist, "TEST_DOUBLE"),
01120 CPL_ERROR_NONE);
01121 cpl_test_abs(irplib_sdp_spectrum_get_fluxerr(a), 2.34, DBL_EPSILON);
01122 cpl_test_eq_error(irplib_sdp_spectrum_copy_referenc(a, plist, "TEST_STRING"),
01123 CPL_ERROR_NONE);
01124 cpl_test_eq_string(irplib_sdp_spectrum_get_referenc(a), "abc");
01125 cpl_test_eq_error(irplib_sdp_spectrum_copy_specres(a, plist, "TEST_DOUBLE"),
01126 CPL_ERROR_NONE);
01127 cpl_test_abs(irplib_sdp_spectrum_get_specres(a), 2.34, DBL_EPSILON);
01128 cpl_test_eq_error(irplib_sdp_spectrum_copy_specerr(a, plist, "TEST_DOUBLE"),
01129 CPL_ERROR_NONE);
01130 cpl_test_abs(irplib_sdp_spectrum_get_specerr(a), 2.34, DBL_EPSILON);
01131 cpl_test_eq_error(irplib_sdp_spectrum_copy_specsye(a, plist, "TEST_DOUBLE"),
01132 CPL_ERROR_NONE);
01133 cpl_test_abs(irplib_sdp_spectrum_get_specsye(a), 2.34, DBL_EPSILON);
01134 cpl_test_eq_error(irplib_sdp_spectrum_copy_lamnlin(a, plist, "TEST_INT"),
01135 CPL_ERROR_NONE);
01136 cpl_test_eq(irplib_sdp_spectrum_get_lamnlin(a), 123);
01137 cpl_test_eq_error(irplib_sdp_spectrum_copy_lamrms(a, plist, "TEST_DOUBLE"),
01138 CPL_ERROR_NONE);
01139 cpl_test_abs(irplib_sdp_spectrum_get_lamrms(a), 2.34, DBL_EPSILON);
01140 cpl_test_eq_error(irplib_sdp_spectrum_copy_gain(a, plist, "TEST_DOUBLE"),
01141 CPL_ERROR_NONE);
01142 cpl_test_abs(irplib_sdp_spectrum_get_gain(a), 2.34, DBL_EPSILON);
01143 cpl_test_eq_error(irplib_sdp_spectrum_copy_detron(a, plist, "TEST_DOUBLE"),
01144 CPL_ERROR_NONE);
01145 cpl_test_abs(irplib_sdp_spectrum_get_detron(a), 2.34, DBL_EPSILON);
01146 cpl_test_eq_error(irplib_sdp_spectrum_copy_effron(a, plist, "TEST_DOUBLE"),
01147 CPL_ERROR_NONE);
01148 cpl_test_abs(irplib_sdp_spectrum_get_effron(a), 2.34, DBL_EPSILON);
01149 cpl_test_eq_error(irplib_sdp_spectrum_copy_snr(a, plist, "TEST_DOUBLE"),
01150 CPL_ERROR_NONE);
01151 cpl_test_abs(irplib_sdp_spectrum_get_snr(a), 2.34, DBL_EPSILON);
01152 cpl_test_eq_error(irplib_sdp_spectrum_copy_ncombine(a, plist, "TEST_INT"),
01153 CPL_ERROR_NONE);
01154 cpl_test_eq(irplib_sdp_spectrum_get_ncombine(a), 123);
01155 cpl_test_eq_error(irplib_sdp_spectrum_copy_prov(a, 1, plist, "TEST_STRING"),
01156 CPL_ERROR_NONE);
01157 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1), "abc");
01158 cpl_test_eq_error(irplib_sdp_spectrum_copy_asson(a, 1, plist, "TEST_STRING"),
01159 CPL_ERROR_NONE);
01160 cpl_test_eq_string(irplib_sdp_spectrum_get_asson(a, 1), "abc");
01161 cpl_test_eq_error(irplib_sdp_spectrum_copy_assoc(a, 1, plist, "TEST_STRING"),
01162 CPL_ERROR_NONE);
01163 cpl_test_eq_string(irplib_sdp_spectrum_get_assoc(a, 1), "abc");
01164 cpl_test_eq_error(irplib_sdp_spectrum_copy_assom(a, 1, plist, "TEST_STRING"),
01165 CPL_ERROR_NONE);
01166 cpl_test_eq_string(irplib_sdp_spectrum_get_assom(a, 1), "abc");
01167 cpl_test_eq_error(irplib_sdp_spectrum_copy_voclass(a, plist, "TEST_STRING"),
01168 CPL_ERROR_NONE);
01169 cpl_test_eq_string(irplib_sdp_spectrum_get_voclass(a), "abc");
01170 cpl_test_eq_error(irplib_sdp_spectrum_copy_vopub(a, plist, "TEST_STRING"),
01171 CPL_ERROR_NONE);
01172 cpl_test_eq_string(irplib_sdp_spectrum_get_vopub(a), "abc");
01173 cpl_test_eq_error(irplib_sdp_spectrum_copy_title(a, plist, "TEST_STRING"),
01174 CPL_ERROR_NONE);
01175 cpl_test_eq_string(irplib_sdp_spectrum_get_title(a), "abc");
01176 cpl_test_eq_error(irplib_sdp_spectrum_copy_object(a, plist, "TEST_STRING"),
01177 CPL_ERROR_NONE);
01178 cpl_test_eq_string(irplib_sdp_spectrum_get_object(a), "abc");
01179 cpl_test_eq_error(irplib_sdp_spectrum_copy_aperture(a, plist, "TEST_DOUBLE"),
01180 CPL_ERROR_NONE);
01181 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.34, DBL_EPSILON);
01182 cpl_test_eq_error(irplib_sdp_spectrum_copy_telapse(a, plist, "TEST_DOUBLE"),
01183 CPL_ERROR_NONE);
01184 cpl_test_abs(irplib_sdp_spectrum_get_telapse(a), 2.34, DBL_EPSILON);
01185 cpl_test_eq_error(irplib_sdp_spectrum_copy_tmid(a, plist, "TEST_DOUBLE"),
01186 CPL_ERROR_NONE);
01187 cpl_test_abs(irplib_sdp_spectrum_get_tmid(a), 2.34, DBL_EPSILON);
01188 cpl_test_eq_error(irplib_sdp_spectrum_copy_specval(a, plist, "TEST_DOUBLE"),
01189 CPL_ERROR_NONE);
01190 cpl_test_abs(irplib_sdp_spectrum_get_specval(a), 2.34, DBL_EPSILON);
01191 cpl_test_eq_error(irplib_sdp_spectrum_copy_specbw(a, plist, "TEST_DOUBLE"),
01192 CPL_ERROR_NONE);
01193 cpl_test_abs(irplib_sdp_spectrum_get_specbw(a), 2.34, DBL_EPSILON);
01194 cpl_test_eq_error(irplib_sdp_spectrum_copy_extname(a, plist, "TEST_STRING"),
01195 CPL_ERROR_NONE);
01196 cpl_test_eq_string(irplib_sdp_spectrum_get_extname(a), "abc");
01197 cpl_test_eq_error(irplib_sdp_spectrum_copy_inherit(a, plist, "TEST_BOOL"),
01198 CPL_ERROR_NONE);
01199 cpl_test_eq(irplib_sdp_spectrum_get_inherit(a), CPL_TRUE);
01200 cpl_test_eq_error(irplib_sdp_spectrum_copy_nelem(a, plist, "TEST_LONGLONG"),
01201 CPL_ERROR_NONE);
01202 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 432);
01203 cpl_test_eq_error(irplib_sdp_spectrum_copy_tdmin(a, plist, "TEST_DOUBLE"),
01204 CPL_ERROR_NONE);
01205 cpl_test_abs(irplib_sdp_spectrum_get_tdmin(a), 2.34, DBL_EPSILON);
01206 cpl_test_eq_error(irplib_sdp_spectrum_copy_tdmax(a, plist, "TEST_DOUBLE"),
01207 CPL_ERROR_NONE);
01208 cpl_test_abs(irplib_sdp_spectrum_get_tdmax(a), 2.34, DBL_EPSILON);
01209
01210
01211
01212
01213
01214 cpl_test_eq_error(irplib_sdp_spectrum_copy_ra(a, plist, "TEST_STRING"),
01215 CPL_ERROR_TYPE_MISMATCH);
01216 cpl_test_eq_error(irplib_sdp_spectrum_copy_ra(a, plist, "SOME_KEY"),
01217 CPL_ERROR_DATA_NOT_FOUND);
01218 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodlvl(a, plist, "TEST_STRING"),
01219 CPL_ERROR_TYPE_MISMATCH);
01220 cpl_test_eq_error(irplib_sdp_spectrum_copy_prodlvl(a, plist, "SOME_KEY"),
01221 CPL_ERROR_DATA_NOT_FOUND);
01222 cpl_test_eq_error(irplib_sdp_spectrum_copy_procsoft(a, plist, "TEST_INT"),
01223 CPL_ERROR_TYPE_MISMATCH);
01224 cpl_test_eq_error(irplib_sdp_spectrum_copy_procsoft(a, plist, "SOME_KEY"),
01225 CPL_ERROR_DATA_NOT_FOUND);
01226 cpl_test_eq_error(irplib_sdp_spectrum_copy_obid(a, 1, plist, "TEST_STRING"),
01227 CPL_ERROR_TYPE_MISMATCH);
01228 cpl_test_eq_error(irplib_sdp_spectrum_copy_obid(a, 1, plist, "SOME_KEY"),
01229 CPL_ERROR_DATA_NOT_FOUND);
01230 cpl_test_eq_error(irplib_sdp_spectrum_copy_mepoch(a, plist, "TEST_STRING"),
01231 CPL_ERROR_TYPE_MISMATCH);
01232 cpl_test_eq_error(irplib_sdp_spectrum_copy_mepoch(a, plist, "SOME_KEY"),
01233 CPL_ERROR_DATA_NOT_FOUND);
01234 cpl_test_eq_error(irplib_sdp_spectrum_copy_prov(a, 1, plist, "TEST_INT"),
01235 CPL_ERROR_TYPE_MISMATCH);
01236 cpl_test_eq_error(irplib_sdp_spectrum_copy_prov(a, 1, plist, "SOME_KEY"),
01237 CPL_ERROR_DATA_NOT_FOUND);
01238 cpl_test_eq_error(irplib_sdp_spectrum_copy_nelem(a, plist, "TEST_STRING"),
01239 CPL_ERROR_TYPE_MISMATCH);
01240 cpl_test_eq_error(irplib_sdp_spectrum_copy_nelem(a, plist, "SOME_KEY"),
01241 CPL_ERROR_DATA_NOT_FOUND);
01242
01243 irplib_sdp_spectrum_delete(a);
01244 cpl_propertylist_delete(plist);
01245 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
01246 }
01247
01248
01249 static int test_column_copy_update_functions(void)
01250 {
01251 const cpl_array *testdata;
01252 int valuesA[2] = {678, 890};
01253 int valuesD[2] = {345, 765};
01254 cpl_array *data;
01255 cpl_table *table = cpl_table_new(1);
01256 cpl_propertylist *plist = cpl_propertylist_new();
01257 irplib_sdp_spectrum *a = irplib_sdp_spectrum_new();
01258 cpl_test_assert(table != NULL);
01259 cpl_test_assert(a != NULL);
01260
01261
01262
01263 cpl_test_assert(cpl_table_new_column_array(table, "A", CPL_TYPE_INT, 2)
01264 == CPL_ERROR_NONE);
01265 cpl_test_assert(cpl_table_set_column_unit(table, "A", "x")
01266 == CPL_ERROR_NONE);
01267 cpl_test_assert(cpl_table_set_column_format(table, "A", "%d")
01268 == CPL_ERROR_NONE);
01269 data = cpl_array_wrap_int(valuesA, 2);
01270 cpl_test_assert(data != NULL);
01271 cpl_test_assert(cpl_table_set_array(table, "A", 0, data)
01272 == CPL_ERROR_NONE);
01273 cpl_array_unwrap(data);
01274 cpl_test_assert(cpl_table_new_column(table, "B", CPL_TYPE_DOUBLE)
01275 == CPL_ERROR_NONE);
01276 cpl_test_assert(cpl_table_new_column(table, "C", CPL_TYPE_STRING)
01277 == CPL_ERROR_NONE);
01278
01279 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table, "A"),
01280 CPL_ERROR_NONE);
01281 cpl_test(irplib_sdp_spectrum_has_column(a, "A"));
01282 cpl_test(! irplib_sdp_spectrum_has_column(a, "B"));
01283 cpl_test(! irplib_sdp_spectrum_has_column(a, "C"));
01284 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
01285 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01286 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01287 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
01288 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01289 cpl_test_null(irplib_sdp_spectrum_get_column_tutyp(a, "A"));
01290 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
01291 cpl_test_null(irplib_sdp_spectrum_get_column_tucd(a, "A"));
01292 cpl_test_error(CPL_ERROR_DATA_NOT_FOUND);
01293
01294 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_regexp(a, table, "A|B", 0),
01295 CPL_ERROR_NONE);
01296 cpl_test(irplib_sdp_spectrum_has_column(a, "A"));
01297 cpl_test(irplib_sdp_spectrum_has_column(a, "B"));
01298 cpl_test(! irplib_sdp_spectrum_has_column(a, "C"));
01299 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 2);
01300 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01301 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01302 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "B"), "");
01303 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "B"), "");
01304 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
01305 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "B"), CPL_ERROR_NONE);
01306 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01307
01308 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_regexp(a, table, "A|B", 1),
01309 CPL_ERROR_NONE);
01310 cpl_test(! irplib_sdp_spectrum_has_column(a, "A"));
01311 cpl_test(! irplib_sdp_spectrum_has_column(a, "B"));
01312 cpl_test(irplib_sdp_spectrum_has_column(a, "C"));
01313 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
01314 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "C"), "");
01315 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "C"), "");
01316 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "C"), CPL_ERROR_NONE);
01317 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01318
01319
01320
01321 cpl_test_assert(cpl_propertylist_append_string(plist, "TS", "abc")
01322 == CPL_ERROR_NONE);
01323
01324 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table, "A"),
01325 CPL_ERROR_NONE);
01326 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01327 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01328 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01329 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01330 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
01331 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_unit(a, "A", plist, "TS"),
01332 CPL_ERROR_NONE);
01333 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "abc");
01334 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01335 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01336 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01337 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
01338 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
01339 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01340
01341 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table, "A"),
01342 CPL_ERROR_NONE);
01343 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01344 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01345 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01346 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01347 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
01348 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_tutyp(a, "A", plist, "TS"),
01349 CPL_ERROR_NONE);
01350 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01351 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01352 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "abc");
01353 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01354 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
01355 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
01356 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01357
01358 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table, "A"),
01359 CPL_ERROR_NONE);
01360 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01361 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01362 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01363 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01364 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
01365 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_tucd(a, "A", plist, "TS"),
01366 CPL_ERROR_NONE);
01367 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01368 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01369 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01370 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "abc");
01371 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
01372 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
01373 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01374
01375 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table, "A"),
01376 CPL_ERROR_NONE);
01377 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01378 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01379 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01380 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01381 cpl_test_null(irplib_sdp_spectrum_get_column_tcomm(a, "A"));
01382 cpl_test_eq_error(irplib_sdp_spectrum_copy_column_tcomm(a, "A", plist, "TS"),
01383 CPL_ERROR_NONE);
01384 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01385 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01386 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01387 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01388 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tcomm(a, "A"), "abc");
01389 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
01390 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01391
01392
01393
01394 cpl_test_assert(cpl_table_new_column_array(table, "D", CPL_TYPE_INT, 2)
01395 == CPL_ERROR_NONE);
01396 cpl_test_assert(cpl_table_set_column_unit(table, "D", "y")
01397 == CPL_ERROR_NONE);
01398 cpl_test_assert(cpl_table_set_column_format(table, "D", "%5d")
01399 == CPL_ERROR_NONE);
01400 data = cpl_array_wrap_int(valuesD, 2);
01401 cpl_test_assert(data != NULL);
01402 cpl_test_assert(cpl_table_set_array(table, "D", 0, data)
01403 == CPL_ERROR_NONE);
01404 cpl_array_unwrap(data);
01405 cpl_test_eq_error(irplib_sdp_spectrum_copy_column(a, table, "A"),
01406 CPL_ERROR_NONE);
01407
01408 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a, "A", table, "D",
01409 IRPLIB_COLUMN_UNIT),
01410 CPL_ERROR_NONE);
01411 cpl_test(irplib_sdp_spectrum_has_column(a, "A"));
01412 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
01413 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "y");
01414 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01415 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01416 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01417 testdata = irplib_sdp_spectrum_get_column_data(a, "A");
01418 cpl_test_nonnull(data);
01419 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesA[0]);
01420 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesA[1]);
01421 cpl_test_eq_error(irplib_sdp_spectrum_set_column_unit(a, "A", "x"),
01422 CPL_ERROR_NONE);
01423
01424 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a, "A", table, "D",
01425 IRPLIB_COLUMN_FORMAT),
01426 CPL_ERROR_NONE);
01427 cpl_test(irplib_sdp_spectrum_has_column(a, "A"));
01428 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
01429 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01430 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%5d");
01431 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01432 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01433 testdata = irplib_sdp_spectrum_get_column_data(a, "A");
01434 cpl_test_nonnull(data);
01435 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesA[0]);
01436 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesA[1]);
01437 cpl_test_eq_error(irplib_sdp_spectrum_set_column_format(a, "A", "%d"),
01438 CPL_ERROR_NONE);
01439
01440 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a, "A", table, "D",
01441 IRPLIB_COLUMN_DATA),
01442 CPL_ERROR_NONE);
01443 cpl_test(irplib_sdp_spectrum_has_column(a, "A"));
01444 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
01445 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "x");
01446 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%d");
01447 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01448 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01449 testdata = irplib_sdp_spectrum_get_column_data(a, "A");
01450 cpl_test_nonnull(data);
01451 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesD[0]);
01452 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesD[1]);
01453
01454
01455 cpl_test_eq_error(irplib_sdp_spectrum_delete_column(a, "A"), CPL_ERROR_NONE);
01456 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 0);
01457 cpl_test_eq_error(irplib_sdp_spectrum_update_column(a, "A", table, "D",
01458 IRPLIB_COLUMN_DATA),
01459 CPL_ERROR_NONE);
01460 cpl_test(irplib_sdp_spectrum_has_column(a, "A"));
01461 cpl_test_eq(irplib_sdp_spectrum_get_ncol(a), 1);
01462 cpl_test_eq_string(irplib_sdp_spectrum_get_column_unit(a, "A"), "y");
01463 cpl_test_eq_string(irplib_sdp_spectrum_get_column_format(a, "A"), "%5d");
01464 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "");
01465 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "");
01466 testdata = irplib_sdp_spectrum_get_column_data(a, "A");
01467 cpl_test_nonnull(data);
01468 cpl_test_eq(cpl_array_get_int(testdata, 0, NULL), valuesD[0]);
01469 cpl_test_eq(cpl_array_get_int(testdata, 1, NULL), valuesD[1]);
01470
01471 irplib_sdp_spectrum_delete(a);
01472 cpl_propertylist_delete(plist);
01473 cpl_table_delete(table);
01474 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
01475 }
01476
01477
01478 static int test_generic_copy_functions(void)
01479 {
01480
01481
01482 const cpl_property *p;
01483 cpl_propertylist *plist = cpl_propertylist_new();
01484 irplib_sdp_spectrum *a = irplib_sdp_spectrum_new();
01485 cpl_test_assert(plist != NULL);
01486 cpl_test_assert(a != NULL);
01487
01488 cpl_test_assert(cpl_propertylist_append_bool(plist, "M_EPOCH", CPL_TRUE)
01489 == CPL_ERROR_NONE);
01490 cpl_test_assert(cpl_propertylist_append_int(plist, "PRODLVL", 123)
01491 == CPL_ERROR_NONE);
01492 cpl_test_assert(cpl_propertylist_append_int(plist, "OBID1", 234)
01493 == CPL_ERROR_NONE);
01494 cpl_test_assert(cpl_propertylist_append_int(plist, "OBID2", 345)
01495 == CPL_ERROR_NONE);
01496 cpl_test_assert(cpl_propertylist_append_long_long(plist, "NELEM", 456)
01497 == CPL_ERROR_NONE);
01498 cpl_test_assert(cpl_propertylist_append_double(plist, "EXPTIME", 1.35)
01499 == CPL_ERROR_NONE);
01500 cpl_test_assert(cpl_propertylist_append_string(plist, "PROCSOFT", "abc")
01501 == CPL_ERROR_NONE);
01502 cpl_test_assert(cpl_propertylist_append_string(plist, "PROV1", "bcd")
01503 == CPL_ERROR_NONE);
01504 cpl_test_assert(cpl_propertylist_append_string(plist, "PROV2", "cde")
01505 == CPL_ERROR_NONE);
01506 cpl_test_assert(cpl_propertylist_append_string(plist, "TUTYP1", "def")
01507 == CPL_ERROR_NONE);
01508 cpl_test_assert(cpl_propertylist_append_string(plist, "TUTYP2", "efg")
01509 == CPL_ERROR_NONE);
01510 cpl_test_assert(cpl_propertylist_append_string(plist, "TUCD1", "fgh")
01511 == CPL_ERROR_NONE);
01512 cpl_test_assert(cpl_propertylist_append_string(plist, "TUCD2", "ghi")
01513 == CPL_ERROR_NONE);
01514 cpl_test_assert(cpl_propertylist_append_double(plist, "APERTURE", 2.46)
01515 == CPL_ERROR_NONE);
01516 cpl_test_assert(cpl_propertylist_append_double(plist, "WAVELMIN", 3.57)
01517 == CPL_ERROR_NONE);
01518
01519 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "M_EPOCH"),
01520 CPL_ERROR_NONE);
01521 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
01522 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "PRODLVL"),
01523 CPL_ERROR_NONE);
01524 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
01525 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "OBID1"),
01526 CPL_ERROR_NONE);
01527 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "OBID2"),
01528 CPL_ERROR_NONE);
01529 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
01530 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
01531 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "EXPTIME"),
01532 CPL_ERROR_NONE);
01533 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
01534 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "PROCSOFT"),
01535 CPL_ERROR_NONE);
01536 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a), "abc");
01537 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "PROV1"),
01538 CPL_ERROR_NONE);
01539 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "PROV2"),
01540 CPL_ERROR_NONE);
01541 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1), "bcd");
01542 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 2), "cde");
01543
01544 cpl_test_eq_error(
01545 irplib_sdp_spectrum_add_column(a, "A", CPL_TYPE_INT, "s", "%2d", "", "",
01546 NULL),
01547 CPL_ERROR_NONE
01548 );
01549 cpl_test_eq_error(
01550 irplib_sdp_spectrum_add_column(a, "B", CPL_TYPE_INT, "m", "%5d", "", "",
01551 NULL),
01552 CPL_ERROR_NONE
01553 );
01554 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "TUTYP1"),
01555 CPL_ERROR_NONE);
01556 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "TUTYP2"),
01557 CPL_ERROR_NONE);
01558 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "def");
01559 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "B"), "efg");
01560 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "TUCD1"),
01561 CPL_ERROR_NONE);
01562 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "TUCD2"),
01563 CPL_ERROR_NONE);
01564 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "fgh");
01565 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "B"), "ghi");
01566
01567 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "APERTURE"),
01568 CPL_ERROR_NONE);
01569 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
01570 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "WAVELMIN"),
01571 CPL_ERROR_NONE);
01572 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
01573 cpl_test_eq_error(irplib_sdp_spectrum_copy_keyword(a, plist, "NELEM"),
01574 CPL_ERROR_NONE);
01575 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
01576
01577
01578 irplib_sdp_spectrum_delete(a);
01579 a = irplib_sdp_spectrum_new();
01580
01581 p = cpl_propertylist_get_property_const(plist, "M_EPOCH");
01582 cpl_test_assert(p != NULL);
01583 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01584 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
01585 p = cpl_propertylist_get_property_const(plist, "PRODLVL");
01586 cpl_test_assert(p != NULL);
01587 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01588 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
01589 p = cpl_propertylist_get_property_const(plist, "OBID1");
01590 cpl_test_assert(p != NULL);
01591 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01592 p = cpl_propertylist_get_property_const(plist, "OBID2");
01593 cpl_test_assert(p != NULL);
01594 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01595 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
01596 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
01597 p = cpl_propertylist_get_property_const(plist, "EXPTIME");
01598 cpl_test_assert(p != NULL);
01599 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01600 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
01601 p = cpl_propertylist_get_property_const(plist, "PROCSOFT");
01602 cpl_test_assert(p != NULL);
01603 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01604 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a), "abc");
01605 p = cpl_propertylist_get_property_const(plist, "PROV1");
01606 cpl_test_assert(p != NULL);
01607 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01608 p = cpl_propertylist_get_property_const(plist, "PROV2");
01609 cpl_test_assert(p != NULL);
01610 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01611 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1), "bcd");
01612 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 2), "cde");
01613
01614 cpl_test_eq_error(
01615 irplib_sdp_spectrum_add_column(a, "A", CPL_TYPE_INT, "s", "%2d", "", "",
01616 NULL),
01617 CPL_ERROR_NONE
01618 );
01619 cpl_test_eq_error(
01620 irplib_sdp_spectrum_add_column(a, "B", CPL_TYPE_INT, "m", "%5d", "", "",
01621 NULL),
01622 CPL_ERROR_NONE
01623 );
01624 p = cpl_propertylist_get_property_const(plist, "TUTYP1");
01625 cpl_test_assert(p != NULL);
01626 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01627 p = cpl_propertylist_get_property_const(plist, "TUTYP2");
01628 cpl_test_assert(p != NULL);
01629 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01630 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "def");
01631 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "B"), "efg");
01632 p = cpl_propertylist_get_property_const(plist, "TUCD1");
01633 cpl_test_assert(p != NULL);
01634 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01635 p = cpl_propertylist_get_property_const(plist, "TUCD2");
01636 cpl_test_assert(p != NULL);
01637 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01638 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "fgh");
01639 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "B"), "ghi");
01640
01641 p = cpl_propertylist_get_property_const(plist, "APERTURE");
01642 cpl_test_assert(p != NULL);
01643 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01644 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
01645 p = cpl_propertylist_get_property_const(plist, "WAVELMIN");
01646 cpl_test_assert(p != NULL);
01647 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01648 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
01649 p = cpl_propertylist_get_property_const(plist, "NELEM");
01650 cpl_test_assert(p != NULL);
01651 cpl_test_eq_error(irplib_sdp_spectrum_copy_property(a, p), CPL_ERROR_NONE);
01652 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
01653
01654
01655 irplib_sdp_spectrum_delete(a);
01656 a = irplib_sdp_spectrum_new();
01657 cpl_test_eq_error(
01658 irplib_sdp_spectrum_add_column(a, "A", CPL_TYPE_INT, "s", "%2d", "", "",
01659 NULL),
01660 CPL_ERROR_NONE
01661 );
01662 cpl_test_eq_error(
01663 irplib_sdp_spectrum_add_column(a, "B", CPL_TYPE_INT, "m", "%5d", "", "",
01664 NULL),
01665 CPL_ERROR_NONE
01666 );
01667
01668 cpl_test_eq_error(irplib_sdp_spectrum_copy_property_regexp(a, plist,
01669 "PROV.*", 1),
01670 CPL_ERROR_NONE);
01671 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
01672 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
01673 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
01674 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
01675 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
01676 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a), "abc");
01677 cpl_test_null(irplib_sdp_spectrum_get_prov(a, 1));
01678 cpl_test_null(irplib_sdp_spectrum_get_prov(a, 2));
01679 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "def");
01680 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "B"), "efg");
01681 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "fgh");
01682 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "B"), "ghi");
01683 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
01684 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
01685 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
01686
01687 cpl_test_eq_error(irplib_sdp_spectrum_copy_property_regexp(a, plist,
01688 ".*", 0),
01689 CPL_ERROR_NONE);
01690 cpl_test_eq(irplib_sdp_spectrum_get_mepoch(a), CPL_TRUE);
01691 cpl_test_eq(irplib_sdp_spectrum_get_prodlvl(a), 123);
01692 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 1), 234);
01693 cpl_test_eq(irplib_sdp_spectrum_get_obid(a, 2), 345);
01694 cpl_test_abs(irplib_sdp_spectrum_get_exptime(a), 1.35, DBL_EPSILON);
01695 cpl_test_eq_string(irplib_sdp_spectrum_get_procsoft(a), "abc");
01696 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 1), "bcd");
01697 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(a, 2), "cde");
01698 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "A"), "def");
01699 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tutyp(a, "B"), "efg");
01700 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "A"), "fgh");
01701 cpl_test_eq_string(irplib_sdp_spectrum_get_column_tucd(a, "B"), "ghi");
01702 cpl_test_abs(irplib_sdp_spectrum_get_aperture(a), 2.46, DBL_EPSILON);
01703 cpl_test_abs(irplib_sdp_spectrum_get_wavelmin(a), 3.57, DBL_EPSILON);
01704 cpl_test_eq(irplib_sdp_spectrum_get_nelem(a), 456);
01705
01706 irplib_sdp_spectrum_delete(a);
01707 cpl_propertylist_delete(plist);
01708 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
01709 }
01710
01711
01728 static cpl_boolean create_file_with_key(cpl_frameset* frames,
01729 const char *filename,
01730 const char *keyword,
01731 const char *value)
01732 {
01733 cpl_error_code error = CPL_ERROR_NONE;
01734 cpl_frame *frame = cpl_frame_new();
01735 cpl_propertylist *plist = cpl_propertylist_new();
01736 if (frame == NULL || plist == NULL) goto cleanup;
01737 if (keyword != NULL) {
01738 error |= cpl_propertylist_append_string(plist, keyword, value);
01739 }
01740 error |= cpl_propertylist_save(plist, filename, CPL_IO_CREATE);
01741 if (error) goto cleanup;
01742 cpl_propertylist_delete(plist);
01743 error |= cpl_frame_set_filename(frame, filename);
01744 error |= cpl_frame_set_tag(frame, "RAW");
01745 error |= cpl_frame_set_group(frame, CPL_FRAME_GROUP_RAW);
01746 error |= cpl_frame_set_level(frame, CPL_FRAME_LEVEL_FINAL);
01747 error |= cpl_frameset_insert(frames, frame);
01748 if (error) goto cleanup;
01749 return CPL_TRUE;
01750
01751 cleanup:
01752 cpl_frame_delete(frame);
01753 cpl_propertylist_delete(plist);
01754 return CPL_FALSE;
01755 }
01756
01757
01758 static int test_append_provenance(void)
01759 {
01760 cpl_error_code error;
01761 const char *filename1 = "dummy_raw_input1_for_prov_test.fits";
01762 const char *filename2 = "dummy_raw_input2_for_prov_test.fits";
01763 const char *filename3 = "dummy_raw_input3_for_prov_test.fits";
01764 cpl_frameset *frames = cpl_frameset_new();
01765 irplib_sdp_spectrum *spec = irplib_sdp_spectrum_new();
01766 cpl_test_assert(frames != NULL);
01767 cpl_test_assert(spec != NULL);
01768
01769
01770
01771
01772
01773 cpl_test_assert(create_file_with_key(frames, filename1, "ARCFILE", "fileA"));
01774 cpl_test_assert(create_file_with_key(frames, filename2, "ORIGFILE", "fileB"));
01775 cpl_test_assert(create_file_with_key(frames, filename3, NULL, NULL));
01776 cpl_test_eq(cpl_frameset_get_size(frames), 3);
01777
01778
01779
01780 error = irplib_sdp_spectrum_append_prov(spec, 2, frames);
01781 cpl_test_error(CPL_ERROR_NONE);
01782 cpl_test_eq_error(error, CPL_ERROR_NONE);
01783 cpl_test_eq(irplib_sdp_spectrum_count_prov(spec),
01784 cpl_frameset_get_size(frames));
01785 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(spec, 2), "fileA");
01786 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(spec, 3), "fileB");
01787 cpl_test_eq_string(irplib_sdp_spectrum_get_prov(spec, 4), filename3);
01788
01789
01790 if (cpl_test_get_failed() == 0) {
01791 (void) remove(filename1);
01792 (void) remove(filename2);
01793 (void) remove(filename3);
01794 }
01795 irplib_sdp_spectrum_delete(spec);
01796 cpl_frameset_delete(frames);
01797 return cpl_test_get_failed() == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
01798 }