#include #include #ifdef HAVE_MPI #include #endif #include "gp.h" #include #define MIN(a,b) ((a) < (b) ? (a) : (b)) #define ABS(a) ((a) > 0. ? (a) : (-(a))) float minflt_(void); int main (int argc, char * argv[]) { int a,andrew; float b,david; int debug=1; int x,y,z; double c,john,themin; int itoto = 1; long int ltoto = 1; short int stoto = 1; #include "parinclude.c" #ifdef HAVE_MPI MPI_Init ( &argc, &argv ); atexit ((void (*)(void)) MPI_Finalize); #endif printf("Starting with the following %d arguments\n",argc); for(a=0; a < argc; a++) { printf("%s \n",argv[a]); } printf("End of arguments list\n"); /* Determine parfile name */ char parfilename[132]; if(argc < 2) { printf("Warning no par_file on command line argument\n"); printf("Will use standard input as parameter file\n"); GP_parfile(NULL); } else { if(strlen(argv[1])>132) { fprintf(stderr,"File name too long: %s\n",argv[1]); exit(1); } strcpy(parfilename,argv[1]); printf("Debugging: parfile name is %s\n",parfilename); GP_parfile(parfilename); } themin = (double) minflt_(); debug=DEBUG; printf( "_____________________________________________________\n"); printf( "\n"); printf( " Testing C functions \n"); printf( "_____________________________________________________\n"); x = ifetch("andrew",&a); y = ffetch("david",&b); z = dfetch("john",&c); if(andrew != a || ABS(david-b) > themin || ABS(john-c) > themin || (x*y*z) == 0) { exit(1); } printf("int andrew = %-14d read = %-14d PASS\n",andrew,a); printf("int david = %-14e read = %-14e PASS\n",david,b); printf("int john = %-14e read = %-14e PASS\n",john,c); if(debug == 1) { printf("size of short int = %d\n",(int) sizeof(stoto)); printf("size of int = %d\n",(int) sizeof(itoto)); printf("size of long int = %d\n\n",(int) sizeof(ltoto)); printf("themin = %e\n",themin); printf("int andrew = %-14d read = %-14d err = %d\n",andrew,a,x); printf("int david = %-14e read = %-14e err = %d\n",david,b,y); printf("int john = %-14e read = %-14e err = %d\n",john,c,z); } printf( "_____________________________________________________\n"); printf( " \n"); printf( " Testing C GP_xxxx functions \n"); printf( "_____________________________________________________\n"); a = GP_ifetch("andrew",0,"DEFAULT"); b = GP_ffetch("david",345.,"DEFAULT"); c = GP_dfetch("john",0.e0,"DEFAULT"); if(debug == 1) { printf("themin = %e\n",themin); printf("int andrew = %-14d read = %-14d err = %d\n",andrew,a,x); printf("int david = %-14e read = %-14e err = %d\n",david,b,y); printf("int john = %-14e read = %-14e err = %d\n",john,c,z); } if(andrew != a || ABS(david-b) > themin || ABS(john-c) > themin || (x*y*z) == 0) { exit(1); } if(debug == 2) { double zero=0.; a = GP_ifetch("andrew",0,"WARNING"); b = GP_ffetch("david",zero,"WARNING"); c = GP_dfetch("john",0.e0,"WARNING"); a = GP_ifetch("noandrew",0,"WARNING"); b = GP_ffetch("nodavid",345.,"WARNING"); c = GP_dfetch("nojohn",0.e0,"WARNING"); a = GP_ifetch("andrew",0,"SEVERE"); b = GP_ffetch("david",zero,"SEVERE"); c = GP_dfetch("john",0.e0,"SEVERE"); a = GP_ifetch("noandrew",0,"SEVERE"); b = GP_ffetch("nodavid",zero,"SEVERE"); c = GP_dfetch("nojohn",0.e0,"SEVERE");} exit(0); }