31 #undef CX_DISABLE_ASSERT
35 #include <uves_propertylist.h>
40 #include <uves_error.h>
43 #include <cxmessages.h>
52 #include <uves_propertylist.h>
53 #define FLT_EPS 1.0e-6
54 #define DBL_EPS 1.0e-14
58 test_property_dump(cpl_property *property)
61 const cxchar *name = cpl_property_get_name(property);
62 const cxchar *comment = cpl_property_get_comment(property);
66 long size = cpl_property_get_size(property);
68 cpl_type type = cpl_property_get_type(property);
71 fprintf(stderr,
"Property at address %p\n", (
void *)property);
72 fprintf(stderr,
"\tname : %p '%s'\n", (
void *)name, name);
73 fprintf(stderr,
"\tcomment: %p '%s'\n", (
void *)comment, comment);
74 fprintf(stderr,
"\ttype : %#09x\n", type);
75 fprintf(stderr,
"\tsize : %ld\n", size);
76 fprintf(stderr,
"\tvalue : ");
81 c = cpl_property_get_char(property);
83 fprintf(stderr,
"''");
85 fprintf(stderr,
"'%c'", c);
89 fprintf(stderr,
"%d", cpl_property_get_bool(property));
93 fprintf(stderr,
"%d", cpl_property_get_int(property));
97 fprintf(stderr,
"%ld", cpl_property_get_long(property));
101 fprintf(stderr,
"%.7g", cpl_property_get_float(property));
104 case CPL_TYPE_DOUBLE:
105 fprintf(stderr,
"%.15g", cpl_property_get_double(property));
108 case CPL_TYPE_STRING:
109 fprintf(stderr,
"'%s'", cpl_property_get_string(property));
113 fprintf(stderr,
"unknown.");
118 fprintf(stderr,
"\n");
126 test_plist_dump(cpl_propertylist *plist)
130 cxlong sz = cpl_propertylist_get_size(plist);
133 fprintf(stderr,
"Property list at address %p:\n", (
void *) plist);
135 for (i = 0; i < sz; i++) {
136 cpl_property *p = cpl_propertylist_get(plist, i);
137 test_property_dump(p);
144 static int test_main(
void)
147 const cxchar *keys[] = {
148 "a",
"b",
"c",
"d",
"e",
"f",
"g",
149 "A",
"B",
"C",
"D",
"E",
"F",
"G"
152 const cxchar *comments[] = {
156 "A long integer value",
157 "A floating point number",
158 "A double precision number",
174 cxfloat fval[] = {-1.23456789, 0.};
175 cxdouble dval[] = {-1.23456789, 0.};
177 cpl_propertylist *plist=NULL;
178 cpl_propertylist *_plist=NULL;
180 cpl_propertylist *header=NULL;
182 cpl_property* p=NULL;
191 struct fcard hdr[] = {
195 "file does conform to FITS standard",
200 "number of bits per data pixel",
204 "number of data axes",
208 "length of data axis 1",
212 "length of data axis 2",
216 "FITS dataset may contain extensions",
219 "European Southern Observatory",
221 {
"DATE",
"2002-03-08T04:27:21.420",
222 "Date this file was written (dd/mm/yyyy)",
224 {
"MJD-OBS",
"52341.17813019",
225 "Obs start 2002-03-08T04:16:30.448",
227 {
"DATE-OBS",
"2002-03-08T04:16:30.448",
228 "Date of observation",
230 {
"EXPTIME",
"600.000",
231 "Total integration time. 00:10:00.000",
237 "12:05:40.1 RA (J2000) pointing",
240 "-07:39:19.9 DEC (J2000) pointing",
243 "Standard FK5 (years)",
246 "Coordinate reference frame",
249 "10:38:29.370 LST at start",
252 "04:17:18.000 UT at start",
254 {
"OBSERVER",
"UNKNOWN",
257 {
"INSTRUME",
"UNKNOWN",
260 {
"PI-COI",
"'555555555'",
261 "Name of PI and COI",
267 "Number of parameters per group",
272 {
"CRVAL1",
"181.41734",
273 "12:05:40.1, RA at ref pixel",
275 {
"CRPIX1",
"2341.8585366",
276 "Reference pixel in X",
278 {
"CDELT1",
"0.20500000",
279 "SS arcsec per pixel in RA",
281 {
"CTYPE1",
"RA---TAN",
282 "pixel coordinate system",
284 {
"CRVAL2",
"-7.65555",
285 "-07:39:19.9, DEC at ref pixel",
287 {
"CRPIX2",
"2487.8585366",
288 "Reference pixel in Y",
290 {
"CDELT2",
"0.20500000",
291 "SS arcsec per pixel in DEC",
293 {
"CTYPE2",
"DEC--TAN",
294 "pixel coordinate system",
297 "pixel=FITS*BSCALE+BZERO",
300 "pixel=FITS*BSCALE+BZERO",
302 {
"CD1_1",
"0.000057",
303 "Translation matrix element",
305 {
"CD1_2",
"0.000000",
306 "Translation matrix element",
308 {
"CD2_1",
"0.000000",
309 "Translation matrix element",
311 {
"CD2_2",
"0.000057",
312 "Translation matrix element",
314 {
"HIERARCH ESO OBS DID",
"ESO-VLT-DIC.OBS-1.7",
317 {
"HIERARCH ESO OBS OBSERVER",
"UNKNOWN",
320 {
"HIERARCH ESO OBS PI-COI NAME",
"UNKNOWN",
323 {
"HIERARCH ESO INS GRAT NAME",
"HR",
326 {
"HIERARCH ESO PRO CATG",
"X",
329 {
"HIERARCH ESO TPL NEXP",
"5",
330 "Number of exposures",
332 {
"HISTORY",
"1st history record", NULL, CPL_TYPE_STRING},
333 {
"COMMENT",
"1st comment record", NULL, CPL_TYPE_STRING},
334 {
"HISTORY",
"2st history record", NULL, CPL_TYPE_STRING},
335 {
"COMMENT",
"2st comment record", NULL, CPL_TYPE_STRING},
336 {
"COMMENT",
"3st comment record", NULL, CPL_TYPE_STRING},
337 {
"HISTORY",
"3st history record", NULL, CPL_TYPE_STRING},
338 {
"END", NULL, NULL, CPL_TYPE_STRING}
351 plist = cpl_propertylist_new();
353 cx_assert(plist != NULL);
354 cx_assert(cpl_propertylist_is_empty(plist));
355 cx_assert(cpl_propertylist_get_size(plist) == 0);
362 cpl_propertylist_append_char(plist, keys[0],
'a');
363 cpl_propertylist_set_comment(plist, keys[0], comments[0]);
365 cpl_propertylist_append_bool(plist, keys[1], 1);
366 cpl_propertylist_set_comment(plist, keys[1], comments[1]);
368 cpl_propertylist_append_int(plist, keys[2], -1);
369 cpl_propertylist_set_comment(plist, keys[2], comments[2]);
371 cpl_propertylist_append_long(plist, keys[3], 32768);
372 cpl_propertylist_set_comment(plist, keys[3], comments[3]);
374 cpl_propertylist_append_float(plist, keys[4], fval[0]);
375 cpl_propertylist_set_comment(plist, keys[4], comments[4]);
377 cpl_propertylist_append_double(plist, keys[5], dval[0]);
378 cpl_propertylist_set_comment(plist, keys[5], comments[5]);
380 cpl_propertylist_append_string(plist, keys[6], comments[6]);
381 cpl_propertylist_set_comment(plist, keys[6], comments[6]);
383 cx_assert(!cpl_propertylist_is_empty(plist));
384 cx_assert(cpl_propertylist_get_size(plist) == 7);
387 for (i = 0; i < cpl_propertylist_get_size(plist); i++) {
388 cpl_property *prop = cpl_propertylist_get(plist, i);
390 cx_assert(!strcmp(cpl_property_get_name(prop), keys[i]));
391 cx_assert(!strcmp(cpl_property_get_comment(prop), comments[i]));
392 cx_assert(cpl_property_get_type(prop) == types[i]);
395 cx_assert(!strcmp(cpl_propertylist_get_comment(plist, keys[i]),
397 cx_assert(cpl_propertylist_get_type(plist, keys[i]) == types[i]);
400 cx_assert(cpl_propertylist_get_char(plist, keys[0]) ==
'a');
401 cx_assert(cpl_propertylist_get_bool(plist, keys[1]) == 1);
402 cx_assert(cpl_propertylist_get_int(plist, keys[2]) == -1);
403 cx_assert(cpl_propertylist_get_long(plist, keys[3]) == 32768);
405 fval[1] = cpl_propertylist_get_float(plist, keys[4]);
406 cx_assert(!memcmp(&fval[0], &fval[1],
sizeof(
float)));
408 dval[1] = cpl_propertylist_get_double(plist, keys[5]);
409 cx_assert(!memcmp(&dval[0], &dval[1],
sizeof(
double)));
411 cx_assert(!strcmp(cpl_propertylist_get_string(plist, keys[6]),
420 cx_assert(cpl_propertylist_set_char(plist, keys[0],
'b') == 0);
421 cx_assert(cpl_propertylist_get_char(plist, keys[0]) ==
'b');
423 cx_assert(cpl_propertylist_set_bool(plist, keys[1], 0) == 0);
424 cx_assert(cpl_propertylist_get_bool(plist, keys[1]) == 0);
426 cx_assert(cpl_propertylist_set_int(plist, keys[2], -1) == 0);
427 cx_assert(cpl_propertylist_get_int(plist, keys[2]) == -1);
429 cx_assert(cpl_propertylist_set_long(plist, keys[3], 1) == 0);
430 cx_assert(cpl_propertylist_get_long(plist, keys[3]) == 1);
432 fval[0] = 9.87654321;
433 cx_assert(cpl_propertylist_set_float(plist, keys[4], fval[0]) == 0);
434 fval[1] = cpl_propertylist_get_float(plist, keys[4]);
435 cx_assert(!memcmp(&fval[0], &fval[1],
sizeof(
float)));
437 dval[0] = -9.87654321;
438 cx_assert(cpl_propertylist_set_double(plist, keys[5], dval[0]) == 0);
439 dval[1] = cpl_propertylist_get_double(plist, keys[5]);
440 cx_assert(!memcmp(&dval[0], &dval[1],
sizeof(
double)));
442 cx_assert(cpl_propertylist_set_string(plist, keys[6], comments[0]) == 0);
443 cx_assert(!strcmp(cpl_propertylist_get_string(plist, keys[6]),
454 if (0) test_plist_dump(plist);
457 if(cpl_propertylist_set_char(plist, keys[1],
'a') ==
458 CPL_ERROR_TYPE_MISMATCH) { cpl_error_reset(); }
461 if (0) test_plist_dump(plist);
465 if(cpl_propertylist_set_bool(plist, keys[2], 1) ==
466 CPL_ERROR_TYPE_MISMATCH) { cpl_error_reset(); }
469 if(cpl_propertylist_set_int(plist, keys[3], 1) ==
470 CPL_ERROR_TYPE_MISMATCH){ cpl_error_reset(); }
473 if(cpl_propertylist_set_long(plist, keys[4], 1) ==
474 CPL_ERROR_TYPE_MISMATCH){ cpl_error_reset(); }
476 if(cpl_propertylist_set_float(plist, keys[5], 1.) ==
477 CPL_ERROR_TYPE_MISMATCH){ cpl_error_reset(); }
479 if(cpl_propertylist_set_double(plist, keys[6], 1.) ==
480 CPL_ERROR_TYPE_MISMATCH){ cpl_error_reset(); }
483 if(cpl_propertylist_set_string(plist, keys[0], comments[0]) ==
484 CPL_ERROR_TYPE_MISMATCH){ cpl_error_reset(); }
495 cx_assert(cpl_propertylist_insert_char(plist, keys[0],
497 cx_assert(cpl_propertylist_insert_after_char(plist, keys[0],
500 cx_assert(cpl_propertylist_insert_bool(plist, keys[1],
502 cx_assert(cpl_propertylist_insert_after_bool(plist, keys[1],
505 cx_assert(cpl_propertylist_insert_int(plist, keys[2],
507 cx_assert(cpl_propertylist_insert_after_int(plist, keys[2],
510 cx_assert(cpl_propertylist_insert_long(plist, keys[3], keys[10],
512 cx_assert(cpl_propertylist_insert_after_long(plist, keys[3], keys[10],
515 cx_assert(cpl_propertylist_insert_float(plist, keys[4], keys[11],
517 cx_assert(cpl_propertylist_insert_after_float(plist, keys[4], keys[11],
520 cx_assert(cpl_propertylist_insert_double(plist, keys[5], keys[12],
522 cx_assert(cpl_propertylist_insert_after_double(plist, keys[5], keys[12],
525 cx_assert(cpl_propertylist_insert_string(plist, keys[6],
527 cx_assert(cpl_propertylist_insert_after_string(plist, keys[6],
529 for (i = 0; i < 7; i++) {
530 cpl_property *p0 = cpl_propertylist_get(plist, 3 * i);
531 cpl_property *p1 = cpl_propertylist_get(plist, 3 * i + 1);
532 cpl_property *p2 = cpl_propertylist_get(plist, 3 * i + 2);
534 cx_assert(!strcmp(cpl_property_get_name(p0), keys[i + 7]));
535 cx_assert(!strcmp(cpl_property_get_name(p1), keys[i]));
536 cx_assert(!strcmp(cpl_property_get_name(p2), keys[i + 7]));
538 switch (cpl_property_get_type(p0)) {
540 cx_assert(cpl_property_get_char(p0) ==
'a');
541 cx_assert(cpl_property_get_char(p2) ==
'c');
545 cx_assert(cpl_property_get_bool(p0) == 0);
546 cx_assert(cpl_property_get_bool(p2) == 1);
550 cx_assert(cpl_property_get_int(p0) == 0);
551 cx_assert(cpl_property_get_int(p2) == 1);
555 cx_assert(cpl_property_get_long(p0) == 123456789);
556 cx_assert(cpl_property_get_long(p2) == 123456789);
560 fval[1] = cpl_property_get_float(p0);
561 cx_assert(!memcmp(&fval[0], &fval[1],
sizeof(
float)));
563 fval[1] = -cpl_property_get_float(p2);
564 cx_assert(!memcmp(&fval[0], &fval[1],
sizeof(
float)));
567 case CPL_TYPE_DOUBLE:
568 dval[1] = cpl_property_get_double(p0);
569 cx_assert(!memcmp(&dval[0], &dval[1],
sizeof(
double)));
571 dval[1] = -cpl_property_get_double(p2);
572 cx_assert(!memcmp(&dval[0], &dval[1],
sizeof(
double)));
575 case CPL_TYPE_STRING:
576 cx_assert(!strcmp(cpl_property_get_string(p0),
""));
577 cx_assert(!strcmp(cpl_property_get_string(p2),
""));
582 cx_log(
"cpl_propertylist-test", CX_LOG_LEVEL_ERROR,
"file %s: "
583 "line %d: Invalid value type encountered", __FILE__,
600 if(cpl_propertylist_set_char(plist,
"Non-existing key",
'a') ==
601 CPL_ERROR_DATA_NOT_FOUND){ cpl_error_reset(); }
604 if(cpl_propertylist_set_bool(plist,
"Non-existing key", 1) ==
605 CPL_ERROR_DATA_NOT_FOUND) { cpl_error_reset(); }
607 if(cpl_propertylist_set_int(plist,
"Non-existing key", 1) ==
608 CPL_ERROR_DATA_NOT_FOUND){ cpl_error_reset(); }
610 if(cpl_propertylist_set_long(plist,
"Non-existing key", 1) ==
611 CPL_ERROR_DATA_NOT_FOUND){ cpl_error_reset(); }
613 if(cpl_propertylist_set_float(plist,
"Non-existing key", 1) ==
614 CPL_ERROR_DATA_NOT_FOUND){ cpl_error_reset(); }
616 if(cpl_propertylist_set_double(plist,
"Non-existing key", 1) ==
617 CPL_ERROR_DATA_NOT_FOUND){ cpl_error_reset(); }
619 if(cpl_propertylist_set_string(plist,
"Non-existing key",
"") ==
620 CPL_ERROR_DATA_NOT_FOUND){ cpl_error_reset(); }
622 if(cpl_propertylist_insert_char(plist,
"Non-existing key",
623 "h",
'a') == 1){ cpl_error_reset(); }
625 if(cpl_propertylist_insert_bool(plist,
"Non-existing key",
626 "h", 1) == 1){ cpl_error_reset(); }
628 if(cpl_propertylist_insert_int(plist,
"Non-existing key",
629 "h", 1) == 1) { cpl_error_reset(); }
631 if(cpl_propertylist_insert_long(plist,
"Non-existing key",
632 "h", 1) == 1) { cpl_error_reset(); }
633 if(cpl_propertylist_insert_float(plist,
"Non-existing key",
634 "h", 1) == 1){ cpl_error_reset(); }
636 if(cpl_propertylist_insert_double(plist,
"Non-existing key",
637 "h", 1) == 1){ cpl_error_reset(); }
638 if(cpl_propertylist_insert_string(plist,
"Non-existing key",
639 "h",
"") == 1){ cpl_error_reset(); }
642 if(cpl_propertylist_insert_after_char(plist,
"Non-existing key",
643 "h",
'a') == 1){ cpl_error_reset(); }
644 if(cpl_propertylist_insert_after_bool(plist,
"Non-existing key",
645 "h", 1) == 1){ cpl_error_reset(); }
646 if(cpl_propertylist_insert_after_int(plist,
"Non-existing key",
647 "h", 1) == 1){ cpl_error_reset(); }
648 if(cpl_propertylist_insert_after_long(plist,
"Non-existing key",
649 "h", 1) == 1){ cpl_error_reset(); }
650 if(cpl_propertylist_insert_after_float(plist,
"Non-existing key",
651 "h", 1) == 1){ cpl_error_reset(); }
652 if(cpl_propertylist_insert_after_double(plist,
"Non-existing key",
653 "h", 1) == 1){ cpl_error_reset(); }
654 if(cpl_propertylist_insert_after_string(plist,
"Non-existing key",
655 "h",
"") == 1){ cpl_error_reset(); }
664 cpl_propertylist_delete(_plist);
666 _plist = cpl_propertylist_duplicate(plist);
669 cx_assert(_plist != NULL);
670 cx_assert(_plist != plist);
673 for (i = 0; i < cpl_propertylist_get_size(plist); i++) {
674 cpl_property *prop = cpl_propertylist_get(plist, i);
675 cpl_property *_prop = cpl_propertylist_get(_plist, i);
678 cx_assert(cpl_property_get_name(prop) != cpl_property_get_name(_prop));
679 cx_assert(!strcmp(cpl_property_get_name(prop),
680 cpl_property_get_name(_prop)));
681 cx_assert(cpl_property_get_comment(prop) == NULL ||
682 (cpl_property_get_comment(prop) !=
683 cpl_property_get_comment(_prop)));
684 cx_assert(cpl_property_get_comment(prop) == NULL ||
685 !strcmp(cpl_property_get_comment(prop),
686 cpl_property_get_comment(_prop)));
688 switch (cpl_property_get_type(prop)) {
690 cx_assert(cpl_property_get_char(prop) ==
691 cpl_property_get_char(_prop));
695 cx_assert(cpl_property_get_bool(prop) ==
696 cpl_property_get_bool(_prop));
700 cx_assert(cpl_property_get_int(prop) ==
701 cpl_property_get_int(_prop));
705 cx_assert(cpl_property_get_long(prop) ==
706 cpl_property_get_long(_prop));
710 fval[0] = cpl_property_get_float(prop);
711 fval[1] = cpl_property_get_float(_prop);
712 cx_assert(!memcmp(&fval[0], &fval[1],
sizeof(
float)));
715 case CPL_TYPE_DOUBLE:
716 dval[0] = cpl_property_get_double(prop);
717 dval[1] = cpl_property_get_double(_prop);
718 cx_assert(!memcmp(&dval[0], &dval[1],
sizeof(
double)));
721 case CPL_TYPE_STRING:
722 cx_assert(!strcmp(cpl_property_get_string(prop),
723 cpl_property_get_string(_prop)));
728 cx_log(
"cpl_propertylist-test", CX_LOG_LEVEL_ERROR,
"file %s: "
729 "line %d: Invalid value type encountered", __FILE__,
737 cpl_propertylist_delete(_plist);
746 for (i = 0; i < 7; i++) {
747 cpl_propertylist_erase(plist, keys[i + 7]);
750 cpl_propertylist_erase(plist, keys[i + 7]);
753 cx_assert(cpl_propertylist_get_size(plist) == 7);
755 for (i = 0; i < 7; i++) {
756 cpl_property *prop = cpl_propertylist_get(plist, i);
757 cx_assert(!strcmp(cpl_property_get_name(prop), keys[i]));
760 if (0) test_plist_dump(plist);
762 cx_assert(cpl_propertylist_get_char(plist, keys[0]) ==
'b');
763 cx_assert(cpl_propertylist_get_bool(plist, keys[1]) == 0);
764 cx_assert(cpl_propertylist_get_int(plist, keys[2]) == -1);
765 cx_assert(cpl_propertylist_get_long(plist, keys[3]) == 1);
767 fval[0] = 9.87654321;
768 fval[1] = cpl_propertylist_get_float(plist, keys[4]);
769 cx_assert(!memcmp(&fval[0], &fval[1],
sizeof(
float)));
771 dval[0] = -9.87654321;
772 dval[1] = cpl_propertylist_get_double(plist, keys[5]);
773 cx_assert(!memcmp(&dval[0], &dval[1],
sizeof(
double)));
775 cx_assert(!strcmp(cpl_propertylist_get_string(plist, keys[6]),
787 cpl_propertylist_empty(plist);
789 cx_assert(cpl_propertylist_is_empty(plist));
790 cx_assert(cpl_propertylist_get_size(plist) == 0);
792 cpl_propertylist_delete(plist);
805 header = cpl_propertylist_new();
808 for (i = 0; (cxsize)i <
sizeof hdr /
sizeof(
struct fcard); i++) {
809 cpl_msg_info(cpl_func,
"iter=%d",(
int)i);
810 cpl_msg_info(cpl_func,
"key=%s",hdr[i].key);
811 cpl_msg_info(cpl_func,
"com=%s",hdr[i].com);
812 cpl_msg_info(cpl_func,
"typ=%d",hdr[i].type);
815 switch (hdr[i].type) {
817 cpl_propertylist_append_char(header,hdr[i].key,atoi(hdr[i].val));
818 p=cpl_propertylist_get_property(header,hdr[i].key);
819 cpl_propertylist_set_comment(header,hdr[i].key,hdr[i].com);
820 cpl_msg_info(cpl_func,
"val=%d",atoi(hdr[i].val));
825 cpl_propertylist_append_bool(header,hdr[i].key,atoi(hdr[i].val));
826 p=cpl_propertylist_get_property(header,hdr[i].key);
827 cpl_propertylist_set_comment(header,hdr[i].key,hdr[i].com);
828 cpl_msg_info(cpl_func,
"val=%d",atoi(hdr[i].val));
833 cpl_propertylist_append_int(header,hdr[i].key,atoi(hdr[i].val));
834 p=cpl_propertylist_get_property(header,hdr[i].key);
835 cpl_propertylist_set_comment(header,hdr[i].key,hdr[i].com);
836 cpl_msg_info(cpl_func,
"val=%d",atoi(hdr[i].val));
841 cpl_propertylist_append_long(header,hdr[i].key,atol(hdr[i].val));
842 p=cpl_propertylist_get_property(header,hdr[i].key);
843 cpl_propertylist_set_comment(header,hdr[i].key,hdr[i].com);
844 cpl_msg_info(cpl_func,
"val=%ld",atol(hdr[i].val));
849 cpl_propertylist_append_long(header,hdr[i].key,atof(hdr[i].val));
850 p=cpl_propertylist_get_property(header,hdr[i].key);
851 cpl_propertylist_set_comment(header,hdr[i].key,hdr[i].com);
852 cpl_msg_info(cpl_func,
"val=%f",atof(hdr[i].val));
856 case CPL_TYPE_DOUBLE:
857 cpl_propertylist_append_double(header,hdr[i].key,atof(hdr[i].val));
858 p=cpl_propertylist_get_property(header,hdr[i].key);
859 cpl_propertylist_set_comment(header,hdr[i].key,hdr[i].com);
860 cpl_msg_info(cpl_func,
"val=%f",atof(hdr[i].val));
864 case CPL_TYPE_STRING:
865 if(strcmp(hdr[i].key,
"END") != 0) {
866 cpl_propertylist_append_string(header,hdr[i].key,hdr[i].val);
867 p=cpl_propertylist_get_property(header,hdr[i].key);
868 cpl_propertylist_set_comment(header,hdr[i].key,hdr[i].com);
869 cpl_msg_info(cpl_func,
"val=%s",hdr[i].val);
876 cx_log(
"uves_propertylist-test", CX_LOG_LEVEL_ERROR,
"file %s: "
877 "line %d: Invalid value type encountered", __FILE__,
886 file = fopen(
"cpltest1.fits",
"w");
887 cpl_propertylist_save(header,
"cpltest1.fits",CPL_IO_CREATE);
890 ima=cpl_image_new(2148,2340,CPL_TYPE_FLOAT);
892 cpl_image_save(ima,
"cpltest1.fits",CPL_BPP_16_SIGNED,header,CPL_IO_DEFAULT);
894 cpl_image_delete(ima);
896 cpl_propertylist_delete(header);
900 plist = cpl_propertylist_load(
"cpltest1.fits", 0);
904 cx_assert(plist != NULL);
910 cpl_msg_info(cpl_func,
"size plist=%" CPL_SIZE_FORMAT
"",cpl_propertylist_get_size(plist));
911 cpl_msg_info(cpl_func,
"size hdr=%ld",
sizeof hdr);
912 cpl_msg_info(cpl_func,
"size fcard=%ld",
sizeof(
struct fcard));
1114 _plist = cpl_propertylist_new();
1118 cpl_propertylist_copy_property_regexp(_plist, plist,
"^ESO .*", 0);
1123 cx_assert(cpl_propertylist_get_size(_plist) == 6);
1133 cpl_propertylist_empty(_plist);
1134 cx_assert(cpl_propertylist_is_empty(_plist) != 0);
1136 cpl_propertylist_copy_property_regexp(_plist, plist,
"^ESO .*", 1);
1137 cx_assert(cpl_propertylist_get_size(_plist) ==
1138 (cpl_propertylist_get_size(plist) - 6));
1149 cpl_propertylist_empty(_plist);
1150 cx_assert(cpl_propertylist_is_empty(_plist) != 0);
1152 cpl_propertylist_copy_property_regexp(_plist, plist,
"^ESO .*", 0);
1153 cx_assert(cpl_propertylist_get_size(_plist) == 6);
1155 cpl_propertylist_erase_regexp(_plist,
"^ESO OBS .*", 0);
1156 cx_assert(cpl_propertylist_get_size(_plist) == 3);
1158 cpl_propertylist_erase_regexp(_plist,
"ESO TPL NEXP", 0);
1159 cx_assert(cpl_propertylist_get_size(_plist) == 2);
1161 cpl_propertylist_delete(_plist);
1162 cpl_propertylist_delete(plist);
1174 plist = cpl_propertylist_load_regexp(
"cpltest1.fits", 0,
1176 cx_assert(plist != NULL);
1177 cx_assert(cpl_propertylist_is_empty(plist) == 0);
1178 cx_assert(cpl_propertylist_get_size(plist) == 6);
1186 cpl_propertylist_delete(plist);
1196 plist = cpl_propertylist_new();
1197 _plist = cpl_propertylist_new();
1199 cpl_propertylist_append_char(plist, keys[0],
'a');
1200 cpl_propertylist_set_comment(plist, keys[0], comments[0]);
1202 cpl_propertylist_append_bool(plist, keys[1], 1);
1203 cpl_propertylist_set_comment(plist, keys[1], comments[1]);
1205 cpl_propertylist_append_int(plist, keys[2], -1);
1206 cpl_propertylist_set_comment(plist, keys[2], comments[2]);
1208 cpl_propertylist_append_long(plist, keys[3], 32768);
1209 cpl_propertylist_set_comment(plist, keys[3], comments[3]);
1211 cpl_propertylist_append_float(_plist, keys[4], fval[0]);
1212 cpl_propertylist_set_comment(_plist, keys[4], comments[4]);
1214 cpl_propertylist_append_double(_plist, keys[5], dval[0]);
1215 cpl_propertylist_set_comment(_plist, keys[5], comments[5]);
1217 cpl_propertylist_append_string(_plist, keys[6], comments[6]);
1218 cpl_propertylist_set_comment(_plist, keys[6], comments[6]);
1220 cx_assert(!cpl_propertylist_is_empty(plist));
1221 cx_assert(cpl_propertylist_get_size(plist) == 4);
1223 cx_assert(!cpl_propertylist_is_empty(_plist));
1224 cx_assert(cpl_propertylist_get_size(_plist) == 3);
1226 cpl_propertylist_append(plist, _plist);
1228 cx_assert(!cpl_propertylist_is_empty(plist));
1229 cx_assert(cpl_propertylist_get_size(plist) == 7);
1231 cx_assert(!cpl_propertylist_is_empty(_plist));
1232 cx_assert(cpl_propertylist_get_size(_plist) == 3);
1234 for (i = 0; i < cpl_propertylist_get_size(plist); i++) {
1235 cpl_property *prop = cpl_propertylist_get(plist, i);
1237 cx_assert(!strcmp(cpl_property_get_name(prop), keys[i]));
1238 cx_assert(!strcmp(cpl_property_get_comment(prop), comments[i]));
1239 cx_assert(cpl_property_get_type(prop) == types[i]);
1242 cx_assert(!strcmp(cpl_propertylist_get_comment(plist, keys[i]),
1244 cx_assert(cpl_propertylist_get_type(plist, keys[i]) == types[i]);
1249 cpl_propertylist_delete(_plist);
1250 cpl_propertylist_delete(plist);
1288 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
1292 return cpl_test_end(0);
int my_uves_propertylist_contains(const cpl_propertylist *self, const char *name)
Check whether a property is present in a property list.
int main(void)
Various tests of low-level library functions.