45 #define LIB_NAME "libtpcimgio"
60 #include "libtpcmisc.h"
64 #define MAXVAL 100000;
69 int test_create_polarmap(
IMG *img,
int num_rings,
int *sectors_per_ring,
float *ring_position,
short int *ring_angle,
short int start_angle);
85 int main (
int argc,
char *argv[ ]) {
87 int errflg=0, functionflag=0, exit_code=0;
89 extern int optind, optopt;
92 while ((c = getopt(argc, argv,
"vVbBrRhHf:F:")) != -1) {
128 functionflag = atoi(optarg);
132 fprintf(stderr,
"Option -%c requires an argument\n", optopt);
136 fprintf(stderr,
"Unrecognised option: -%c\n", optopt);
156 printf(
"cannot create test data.\n");
162 switch(functionflag){
169 int sectors_per_ring[]={6,6,4,1};
170 float ring_position[]={0,0.2,0.4,0.6};
171 short int ring_angle[]={90,90,45,0};
172 short int start_angle=0;
174 if(
test_create_polarmap(&polarmap, num_rings, sectors_per_ring, ring_position, ring_angle, start_angle)) {
175 printf(
"cannot create test data.\n");
186 fprintf(stdout,
"\n NO TEST FUNCTION IMPLEMENTATIONS!\n");
190 printf(
"\n exit_code := %d\n", exit_code);
212 printf(
" \nError in image allocation: imgAllocate() @ img.c\n");
218 for(fi=0; fi<dim_t; fi++) {
219 if(fi==0) img->
start[fi]=0.0;
else img->
start[fi]=img->
end[fi-1];
220 img->
end[fi]=(fi+1)*60.0;
224 for(zi=0; zi<dim_z; zi++) {
226 for(yi=0; yi<dim_y; yi++) {
228 for(xi=0; xi<dim_x; xi++) {
230 for(fi=0; fi<dim_t; fi++) {
231 img->
m[zi][yi][xi][fi]=f*(float)(1+fi);
253 short int *ring_angle,
short int start_angle) {
254 int si, fi, xi, dim_x, dim_t=1;
258 for(si=dim_x=0; si<num_rings; si++) dim_x+=sectors_per_ring[si];
260 printf(
" \nError in image allocation: imgAllocate() @ img.c\n");
265 for(fi=0; fi<dim_t; fi++) {
266 if(fi==0) img->
start[fi]=0.0;
else img->
start[fi]=img->
end[fi-1];
267 img->
end[fi]=(fi+1)*60.0;
270 for(xi=0; xi<dim_x; xi++) {
272 for(fi=0; fi<dim_t; fi++) {
273 img->
m[0][0][xi][fi]=f*(float)(1+fi);
278 for(si=0; si<num_rings; si++) {
314 char *fname=
"test_img_io", temp[FILENAME_MAX];
317 float minvalue = 0.0f;
318 float maxvalue = 0.0f;
319 float maxvalue_old = 0.0f;
320 float maxvalue_abs_old = 0.0f;
321 float minvalue_old = 0.0f;
322 float minvalue_frame_old = 0.0f;
323 float maxvalue_frame_old = 0.0f;
325 printf(
"\n Testing IMG I/O functions\n");
329 printf(
"\tfname := %s\n", fname);
331 if(
imgMax(img, &maxvalue_old))
return(110);
332 if(
imgAbsMax(img, &maxvalue_abs_old))
return(111);
333 if(
imgMinMax(img, &minvalue_old, &maxvalue))
return(112);
334 if(
imgFrameMinMax(img, 1, &minvalue_frame_old, &maxvalue_frame_old))
return(113);
338 ret=
imgWrite(fname, img);
if(ret)
return(11);
343 ret=
imgWrite(fname, img);
if(ret)
return(13);
344 ret=
imgRead(fname, &img2);
if(ret)
return(14);
348 if(
imgMax(img, &maxvalue))
return(110);
349 if(maxvalue != maxvalue_old)
return(110);
350 if(
imgAbsMax(img, &maxvalue))
return(111);
351 if(maxvalue != maxvalue_abs_old)
return(111);
352 if(
imgMinMax(img, &minvalue, &maxvalue))
return(112);
353 if(minvalue != minvalue_old)
return(112);
355 if(minvalue != minvalue_frame_old)
return(113);
356 if(maxvalue != maxvalue_frame_old)
return(113);
360 ret=
imgWrite(fname, img);
if(ret)
return(21);
361 ret=
imgRead(fname, &img2);
if(ret)
return(22);
366 ret=
imgWrite(fname, img);
if(ret)
return(31);
367 ret=
imgRead(fname, &img2);
if(ret)
return(32);
368 sprintf(temp,
"%s.hdr", fname); remove(temp);
369 sprintf(temp,
"%s.img", fname); remove(temp);
372 ret=
imgWrite(fname, img);
if(ret)
return(33);
373 ret=
imgRead(fname, &img2);
if(ret)
return(34);
374 sprintf(temp,
"%s.hdr", fname); remove(temp);
375 sprintf(temp,
"%s.img", fname); remove(temp);
388 char *fname=
"test_polarmap_io";
392 printf(
"\n Testing POLARMAP IMG I/O functions\n");
396 printf(
"\tfname := %s\n", fname);
400 ret=
imgWrite(fname, img);
if(ret)
return(11);
401 ret=
imgRead(fname, &img2);
if(ret)
return(12);
416 char test_str[256] = {0};
418 #ifndef __STRICT_ANSI__
425 #define TEST_WITH_FILENAME(filename,desired_length,error_value) \
426 sprintf(test_str,filename); \
427 anaRemoveFNameExtension(test_str); \
429 while(test_str[i] != 0) i++; \
430 if(i != desired_length) return(error_value); \
431 memset(test_str,0,256); \
450 #define TEST_WITH_FORMAT(filename,desired_format,error_value) \
451 img->_fileFormat = IMG_UNKNOWN; \
452 sprintf(test_str,filename); \
453 imgFormatFromFName(img, test_str); \
454 if(img->_fileFormat != desired_format) return(error_value); \
455 memset(test_str,0,256); \
470 sprintf(test_str,
"filename.dat"); \
471 imgFormatFromFName(img, test_str);
474 #ifndef __STRICT_ANSI__
484 if(st->tm_hour != 0) {
485 printf(
"hour:%d\n",st->tm_hour);
500 if(st->tm_year != 99 || st->tm_mon != 2 ||
501 st->tm_mday != 1 || st->tm_hour != 12 ||
502 st->tm_min != 23 || st->tm_sec != 35) {
518 " Methods for testing functions in the library "LIB_NAME"\n"
519 " and for printing out associated information, such as Readme,\n"
520 " History and build information. \n"
526 " Print out the "LIB_NAME" History message. Include Doxygen style tags\n"
527 " by using option '-H'.\n"
529 " Print out the "LIB_NAME" Readme message. Include Doxygen style tags\n"
530 " by using option '-R'.\n"
532 puts(
" Print out the "LIB_NAME" build information.\n"
533 " -f <function serial number>\n"
534 " Runs test procedures for the functions corresponding to given\n"
535 " 'function serial number'. Serial numbers are defined in file\n"
538 " Run in verbose mode.\n"
542 " "LIB_NAME" -v -f ${IMGTRANSFORM} -z 4 \n"
int imgAllocate(IMG *image, int planes, int rows, int columns, int frames)
void imgEmpty(IMG *image)
#define IMG_TYPE_POLARMAP
#define IMG_STATUS_INITIALIZED
void imgGetEcat7MHeader(IMG *img, ECAT7_mainheader *h)
int imgRead(const char *fname, IMG *img)
int imgWrite(const char *fname, IMG *img)
int imgFrameMinMax(IMG *img, int frame, float *minvalue, float *maxvalue)
int imgAbsMax(IMG *img, float *maxvalue)
int imgMinMax(IMG *img, float *minvalue, float *maxvalue)
int imgMax(IMG *img, float *maxvalue)
int test_img_io(IMG *img)
int main(int argc, char *argv[])
#define TEST_WITH_FORMAT(filename, desired_format, error_value)
int test_polarmap_io(IMG *img)
int test_create_polarmap(IMG *img, int num_rings, int *sectors_per_ring, float *ring_position, short int *ring_angle, short int start_angle)
int test_modules(IMG *img)
#define TEST_WITH_FILENAME(filename, desired_length, error_value)
int test_create_img(IMG *img, int dim_x, int dim_y, int dim_z, int dim_t)
void libtpcimgio_print_build(FILE *fp)
void libtpcimgio_print_readme(FILE *fp)
void libtpcimgio_print_dhistory(FILE *fp)
void libtpcimgio_print_history(FILE *fp)
void libtpcimgio_print_dreadme(FILE *fp)
short int polarmap_start_angle
int polarmap_sectors_per_ring[MAX_POLARMAP_NUM_RINGS]
short int polarmap_ring_angle[MAX_POLARMAP_NUM_RINGS]
float polarmap_ring_position[MAX_POLARMAP_NUM_RINGS]