37 #include "irplib_wcs.h"
42 static void irplib_wcs_all_test(
void);
44 static void irplib_wcs_mjd_test(
void);
53 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
55 irplib_wcs_all_test();
57 irplib_wcs_mjd_test();
59 return cpl_test_end(0);
69 static void irplib_wcs_all_test(
void)
71 const double xorig = 1.0;
72 const double yorig = 2.0;
75 cpl_propertylist * prop_wcs;
81 prop_wcs = cpl_propertylist_new();
82 cpl_test_nonnull(prop_wcs);
84 cpl_propertylist_append_double(prop_wcs,
"CRVAL1", 10.);
85 cpl_propertylist_append_double(prop_wcs,
"CRVAL2", 20.);
86 cpl_propertylist_append_int(prop_wcs,
"CRPIX1", 1);
87 cpl_propertylist_append_int(prop_wcs,
"CRPIX2", 2);
88 cpl_propertylist_append_double(prop_wcs,
"CD1_1", 10.);
89 cpl_propertylist_append_double(prop_wcs,
"CD1_2", 11.);
90 cpl_propertylist_append_double(prop_wcs,
"CD2_1", 13.);
91 cpl_propertylist_append_double(prop_wcs,
"CD2_2", 14.);
93 cpl_test_error(CPL_ERROR_NONE);
95 wcs = cpl_wcs_new_from_propertylist(prop_wcs);
96 cpl_propertylist_delete(prop_wcs);
98 if (cpl_error_get_code() == CPL_ERROR_NO_WCS) {
100 cpl_msg_warning(cpl_func,
"No WCS present. Tests disabled");
101 cpl_test_error(CPL_ERROR_NO_WCS);
106 cpl_test_nonnull(wcs);
109 error = irplib_wcs_xytoradec(wcs, xorig, yorig, &ra, &dec);
110 cpl_test_eq_error(error, CPL_ERROR_NONE);
113 error = irplib_wcs_radectoxy(wcs, ra, dec, &xnew, &ynew);
114 cpl_test_eq_error(error, CPL_ERROR_NONE);
116 cpl_test_abs(xnew, xorig, 2.0 * DBL_EPSILON);
117 cpl_test_abs(ynew, yorig, 2.0 * DBL_EPSILON);
121 error = irplib_wcs_xytoradec(wcs, xorig, yorig, NULL, &dec);
122 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
124 error = irplib_wcs_radectoxy(wcs, ra, dec, NULL, &ynew);
125 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
127 error = irplib_wcs_xytoradec(wcs, xorig, yorig, &ra, NULL);
128 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
130 error = irplib_wcs_radectoxy(wcs, ra, dec, &xnew, NULL);
131 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
139 error = irplib_wcs_xytoradec(NULL, xorig, yorig, &ra, &dec);
140 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
142 error = irplib_wcs_radectoxy(NULL, ra, dec, &xnew, &ynew);
143 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
156 static void irplib_wcs_mjd_test(
void)
160 const char * iso8601 =
"2010-07-13T23:24:39.284";
161 const double mjd = 55390.97545467;
164 const char * iso8601a =
"2010-07-13T24:00:00";
165 const char * iso8601b =
"2010-07-14T00:00:00.000";
167 const double mstol = 1e-3/86400.0;
168 int year, day, month, hour, minute;
171 cpl_error_code error;
175 error = irplib_wcs_iso8601_from_mjd(&year, &month, &day, &hour,
176 &minute, &second, 0.0);
177 cpl_test_eq_error(error, CPL_ERROR_NONE);
179 cpl_test_eq(year, 1858);
180 cpl_test_eq(month, 11);
181 cpl_test_eq(day, 17);
182 cpl_test_eq(hour, 0);
183 cpl_test_eq(minute, 0);
184 cpl_test_abs(second, 0.0, 2.0 * DBL_EPSILON);
187 error = irplib_wcs_mjd_from_iso8601(&tmjd, year, month, day, hour, minute,
189 cpl_test_eq_error(error, CPL_ERROR_NONE);
191 cpl_test_abs(tmjd, 0.0, 2.0 * DBL_EPSILON);
194 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
195 &minute, &second, iso8601);
196 cpl_test_eq_error(error, CPL_ERROR_NONE);
198 error = irplib_wcs_mjd_from_iso8601(&tmjd, year, month, day, hour, minute,
200 cpl_test_eq_error(error, CPL_ERROR_NONE);
202 cpl_test_abs(mjd, tmjd, mstol);
204 error = irplib_wcs_mjd_from_string(&tmjd, iso8601);
205 cpl_test_eq_error(error, CPL_ERROR_NONE);
207 cpl_test_abs(mjd, tmjd, mstol);
209 error = irplib_wcs_iso8601_from_mjd(&year, &month, &day, &hour,
210 &minute, &second, mjd);
211 cpl_test_eq_error(error, CPL_ERROR_NONE);
213 error = irplib_wcs_mjd_from_iso8601(&tmjd, year, month, day, hour, minute,
215 cpl_test_eq_error(error, CPL_ERROR_NONE);
217 cpl_test_abs(mjd, tmjd, 2.0 * DBL_EPSILON);
220 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
221 &minute, &second, iso8601a);
222 cpl_test_eq_error(error, CPL_ERROR_NONE);
224 error = irplib_wcs_mjd_from_iso8601(&tmjd, year, month, day, hour, minute,
226 cpl_test_eq_error(error, CPL_ERROR_NONE);
228 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
229 &minute, &second, iso8601b);
230 cpl_test_eq_error(error, CPL_ERROR_NONE);
232 error = irplib_wcs_mjd_from_iso8601(&tmjd2, year, month, day, hour, minute,
234 cpl_test_eq_error(error, CPL_ERROR_NONE);
236 cpl_test_abs(tmjd, tmjd2, 2.0 * DBL_EPSILON);
239 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
241 "10000-07-13T23:24:39.284");
242 cpl_test_eq_error(error, CPL_ERROR_ILLEGAL_INPUT);
245 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
247 "2010-02-29T23:24:39.284");
248 cpl_test_eq_error(error, CPL_ERROR_ILLEGAL_INPUT);
251 error = irplib_wcs_mjd_from_iso8601(NULL, year, month, day, hour, minute,
253 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
255 error = irplib_wcs_iso8601_from_string(NULL, &month, &day, &hour,
256 &minute, &second, iso8601);
257 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
259 error = irplib_wcs_iso8601_from_string(&year, NULL, &day, &hour,
260 &minute, &second, iso8601);
261 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
263 error = irplib_wcs_iso8601_from_string(&year, &month, NULL, &hour,
264 &minute, &second, iso8601);
265 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
267 error = irplib_wcs_iso8601_from_string(&year, &month, &day, NULL,
268 &minute, &second, iso8601);
269 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
271 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
272 NULL, &second, iso8601);
273 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
275 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
276 &minute, NULL, iso8601);
277 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
279 error = irplib_wcs_iso8601_from_string(&year, &month, &day, &hour,
280 &minute, &second, NULL);
281 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
283 error = irplib_wcs_iso8601_from_mjd(NULL, &month, &day, &hour,
284 &minute, &second, mjd);
285 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
287 error = irplib_wcs_iso8601_from_mjd(&year, NULL, &day, &hour,
288 &minute, &second, mjd);
289 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
291 error = irplib_wcs_iso8601_from_mjd(&year, &month, NULL, &hour,
292 &minute, &second, mjd);
293 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
295 error = irplib_wcs_iso8601_from_mjd(&year, &month, &day, NULL,
296 &minute, &second, mjd);
297 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
299 error = irplib_wcs_iso8601_from_mjd(&year, &month, &day, &hour,
301 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
303 error = irplib_wcs_iso8601_from_mjd(&year, &month, &day, &hour,
305 cpl_test_eq_error(error, CPL_ERROR_NULL_INPUT);
int main(void)
Various tests of low-level library functions.