[svn-r8282] Purpose:

bug fix

Description:
the -p option was not parsing correctly if the input was in the exponential format

Solution:
add a new parse test for floating point numbers

Platforms tested:
linux

Misc. update:
This commit is contained in:
Pedro Vicente Nunes 2004-03-25 15:27:47 -05:00
parent 9c79ce84ee
commit 1b008c03aa
6 changed files with 27 additions and 99 deletions

View File

@ -29,7 +29,7 @@ static int check_f_input( const char* );
/*-------------------------------------------------------------------------
* Function: main
*
* Purpose: H5diff main program
* Purpose: h5diff main program
*
* Return: An exit status of 0 means no differences were found, 1 means some
* differences were found.
@ -73,14 +73,11 @@ int main(int argc, const char *argv[])
* file names are first
*-------------------------------------------------------------------------
*/
if ( argc>=3 )
{
fname1 = argv[1];
fname2 = argv[2];
}
/*-------------------------------------------------------------------------
* parse command line options
*-------------------------------------------------------------------------
@ -121,7 +118,7 @@ int main(int argc, const char *argv[])
}
else
{
printf("<-d %s> is not a valid option\n", argv[i+1] );
printf("Not a valid -d option\n");
usage();
}
break;
@ -137,6 +134,11 @@ int main(int argc, const char *argv[])
options.percent = atof(argv[i+1]);
i++; /* go to next */
}
else
{
printf("Not a valid -p option\n");
usage();
}
break;
case 'n':
if ( i<argc-1 && '-' !=argv[i+1][0] )
@ -150,6 +152,11 @@ int main(int argc, const char *argv[])
options.count = atoi(argv[i+1]);
i++; /* go to next */
}
else
{
printf("Not a valid -n option\n");
usage();
}
break;
} /*switch*/
} /*for*/
@ -182,7 +189,6 @@ int main(int argc, const char *argv[])
}/*for*/
/*-------------------------------------------------------------------------
* print the command line options
*-------------------------------------------------------------------------
@ -198,8 +204,6 @@ int main(int argc, const char *argv[])
printf("\n");
}
nfound = h5diff(fname1,fname2,objname1,objname2,&options);
if (options.verbose) printf("\n");
ret= (nfound==0 ? 0 : 1 );
@ -207,7 +211,6 @@ int main(int argc, const char *argv[])
}
/*-------------------------------------------------------------------------
* Function: check_n_input
*
@ -266,26 +269,15 @@ int check_n_input( const char *str )
static
int check_f_input( const char *str )
{
unsigned i;
char c;
double x;
/* '0' values not allowed */
if ( strlen(str)==1 && str[0]=='0' )
x=atof(str);
if (x==0)
return -1;
for ( i = 0; i < strlen(str); i++)
{
c = str[i];
if ( c < 48 || c > 57 ) /* ascii values between 0 and 9 */
if ( c!= 46) /* . */
return -1;
}
return 1;
}
/*-------------------------------------------------------------------------
* Function: usage
*

View File

@ -1,7 +1,7 @@
#############################
Expected output for 'h5diff file1.h5 file2.h5 -d -4 g1/dset3 g1/dset4'
#############################
<-d -4> is not a valid option
Not a valid -d option
Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]]
file1 File name of the first HDF5 file

View File

@ -1,39 +1,11 @@
#############################
Expected output for 'h5diff file1.h5 file2.h5 -d 0x1 g1/dset3 g1/dset4'
#############################
<-d 0x1> is not a valid option
Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]]
file1 File name of the first HDF5 file
file2 File name of the second HDF5 file
[obj1] Name of an HDF5 object, in absolute path
[obj2] Name of an HDF5 object, in absolute path
[OPTIONS] are:
[-h] Print out this information
[-v] Verbose mode
[-r] Print only what objects differ, not the differences
[-n count] Print difference up to count number
[-d delta] Print difference when it is greater than limit delta
[-p relative] Print difference when it is greater than a relative limit
Items in [] are optional
[obj1] and [obj2] are HDF5 objects (datasets, groups or datatypes)
The 'count' value must be a positive integer
The 'delta' and 'relative' values must be positive numbers
The -d compare criteria is |a - b| > delta
The -p compare criteria is |1 - b/a| > relative
Examples:
1) h5diff file1 file2 /a/b /a/c
Compares object '/a/b' in file1 with '/a/c' in file2
2) h5diff file1 file2 /a/b
Compares object '/a/b' in both files
3) h5diff file1 file2
Compares all objects in both files
position dset3 dset4 difference
------------------------------------------------------------
[ 0 0 ] 100.000000 110.000000 10.000000
[ 0 1 ] 110.000000 100.000000 10.000000
[ 1 0 ] 100.000000 90.000000 10.000000
[ 1 1 ] 100.000000 80.000000 20.000000
[ 2 0 ] 100.000000 140.000000 40.000000
[ 2 1 ] 100.000000 200.000000 100.000000

View File

@ -1,7 +1,7 @@
#############################
Expected output for 'h5diff file1.h5 file2.h5 -p -4 g1/dset3 g1/dset4'
#############################
-4 is an invalid option
Not a valid -p option
Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]]
file1 File name of the first HDF5 file

View File

@ -1,39 +1,3 @@
#############################
Expected output for 'h5diff file1.h5 file2.h5 -p 0x1 g1/dset3 g1/dset4'
#############################
<-p 0x1> is not a valid option
Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]]
file1 File name of the first HDF5 file
file2 File name of the second HDF5 file
[obj1] Name of an HDF5 object, in absolute path
[obj2] Name of an HDF5 object, in absolute path
[OPTIONS] are:
[-h] Print out this information
[-v] Verbose mode
[-r] Print only what objects differ, not the differences
[-n count] Print difference up to count number
[-d delta] Print difference when it is greater than limit delta
[-p relative] Print difference when it is greater than a relative limit
Items in [] are optional
[obj1] and [obj2] are HDF5 objects (datasets, groups or datatypes)
The 'count' value must be a positive integer
The 'delta' and 'relative' values must be positive numbers
The -d compare criteria is |a - b| > delta
The -p compare criteria is |1 - b/a| > relative
Examples:
1) h5diff file1 file2 /a/b /a/c
Compares object '/a/b' in file1 with '/a/c' in file2
2) h5diff file1 file2 /a/b
Compares object '/a/b' in both files
3) h5diff file1 file2
Compares all objects in both files

View File

@ -1,7 +1,7 @@
#############################
Expected output for 'h5diff file1.h5 file2.h5 -n -4 g1/dset3 g1/dset4'
#############################
-4 is an invalid option
Not a valid -n option
Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]]
file1 File name of the first HDF5 file