Fixed an error for zero length files.

This commit is contained in:
Harry Moffat 2006-08-29 16:49:54 +00:00
parent 3d9f85cf09
commit aa3e8cf53b

View file

@ -296,6 +296,9 @@ static void get_sizes(FILE *fp, int &nTitleLines, int &nColTitleLines,
* set a preliminary value of nCol * set a preliminary value of nCol
*/ */
nCol = maxCommas + 1; nCol = maxCommas + 1;
if (nScanLines == 0) {
nCol = 0;
}
char **strlets = (char **) mdp_alloc_ptr_1(maxCommas+1); char **strlets = (char **) mdp_alloc_ptr_1(maxCommas+1);
int doingLineType = LT_TITLELINE; int doingLineType = LT_TITLELINE;
@ -575,11 +578,11 @@ int main(int argc, char *argv[])
int opt_let; int opt_let;
char *fileName1=NULL, *fileName2=NULL; /* Names of the csv files */ char *fileName1=NULL, *fileName2=NULL; /* Names of the csv files */
FILE *fp1=NULL, *fp2=NULL; FILE *fp1=NULL, *fp2=NULL;
int nTitleLines1, nTitleLines2; int nTitleLines1 = 0, nTitleLines2 = 0;
int nColTitleLines1, nColTitleLines2; int nColTitleLines1 = 0, nColTitleLines2 = 0;
int nCol1, nCol2, nColMAX, nColcomparisons; int nCol1 = 0, nCol2 = 0, nColMAX = 0, nColcomparisons = 0;
int nDataRows1, nDataRows2; int nDataRows1 = 0, nDataRows2 = 0;
char **title1, **title2; char **title1 = 0, **title2 = 0;
int **compColList = NULL; int **compColList = NULL;
char ***ColMLNames1 = NULL, ***ColMLNames2 = NULL; char ***ColMLNames1 = NULL, ***ColMLNames2 = NULL;
char **ColNames1 = NULL, **ColNames2 = NULL; char **ColNames1 = NULL, **ColNames2 = NULL;
@ -689,9 +692,28 @@ int main(int argc, char *argv[])
*/ */
get_sizes(fp1, nTitleLines1, nColTitleLines1, nCol1, nDataRows1); get_sizes(fp1, nTitleLines1, nColTitleLines1, nCol1, nDataRows1);
if (nCol1 == 0) {
printf("Number of columns in file %s is zero\n", fileName1);
testPassed = -1;
exit (-1);
}
if (nDataRows1 == 0) {
printf("Number of data rows in file %s is zero\n", fileName1);
testPassed = -1;
exit (-1);
}
get_sizes(fp2, nTitleLines2, nColTitleLines2, nCol2, nDataRows2); get_sizes(fp2, nTitleLines2, nColTitleLines2, nCol2, nDataRows2);
if (nCol2 == 0) {
printf("Number of columns in file %s is zero\n", fileName2);
testPassed = -1;
exit (-1);
}
if (nDataRows2 == 0) {
printf("Number of data rows in file %s is zero\n", fileName2);
testPassed = -1;
exit (-1);
}
if (nTitleLines1 != nTitleLines2) { if (nTitleLines1 != nTitleLines2) {
printf("Number o Title Lines differ:, %d %d\n",nTitleLines1, nTitleLines2); printf("Number o Title Lines differ:, %d %d\n",nTitleLines1, nTitleLines2);
@ -860,7 +882,7 @@ int main(int argc, char *argv[])
max_diff = rel_diff; max_diff = rel_diff;
} }
if (ndiff < 10) { if (ndiff < 10) {
printf("\tColumn variable %s at data row %d ", ColNames1[i1], j); printf("\tColumn variable %s at data row %d ", ColNames1[i1], j + 1);
printf(" differ: %g %g\n", curVarValues1[j], printf(" differ: %g %g\n", curVarValues1[j],
curVarValues2[j]); curVarValues2[j]);
} }
@ -873,12 +895,12 @@ int main(int argc, char *argv[])
if (ndiff < 10) { if (ndiff < 10) {
if (nDataRows1 > nDataRows2) { if (nDataRows1 > nDataRows2) {
for (j = nDataRowsMIN; j < nDataRowsMAX; j++) { for (j = nDataRowsMIN; j < nDataRowsMAX; j++) {
printf("\tColumn variable %s at data row %d ", ColNames1[i1], j); printf("\tColumn variable %s at data row %d ", ColNames1[i1], j + 1);
printf(" differ: %g NA\n", curVarValues1[j]); printf(" differ: %g NA\n", curVarValues1[j]);
} }
} else { } else {
for (j = nDataRowsMIN; j < nDataRowsMAX; j++) { for (j = nDataRowsMIN; j < nDataRowsMAX; j++) {
printf("\tColumn variable %s at data row %d ", ColNames1[i1], j); printf("\tColumn variable %s at data row %d ", ColNames1[i1], j + 1);
printf(" differ: NA %g \n", curVarValues2[j]); printf(" differ: NA %g \n", curVarValues2[j]);
} }
} }
@ -893,7 +915,7 @@ int main(int argc, char *argv[])
printf( printf(
"Column variable %s failed comparison test for %d occurances\n", "Column variable %s failed comparison test for %d occurances\n",
ColNames1[i1], ndiff); ColNames1[i1], ndiff);
printf(" Largest difference was at data row %d ", jmax); printf(" Largest difference was at data row %d ", jmax + 1);
printf(": %g %g\n", curVarValues1[jmax], curVarValues2[jmax]); printf(": %g %g\n", curVarValues1[jmax], curVarValues2[jmax]);
testPassed = 0; testPassed = 0;
} else if (Debug_Flag) { } else if (Debug_Flag) {