From 8eb5f818bab32fcf61cf805b880c5cc4dd1e98bc Mon Sep 17 00:00:00 2001 From: Pedro Vicente Nunes Date: Mon, 29 Mar 2004 11:53:52 -0500 Subject: [svn-r8286] Purpose: bug fix continuation Description: the atof return value on a hexadecimal input is different on some systems; before checking for the atof return value do a character check for the first 2 characters of the string input Solution: Platforms tested: linux solaris Misc. update: --- tools/h5diff/h5diff_main.c | 9 ++++++++- tools/h5diff/testh5diff.sh | 4 ++-- tools/testfiles/h5diff_606.txt | 44 ++++++++++++++++++++++++++++++++++-------- tools/testfiles/h5diff_615.txt | 36 ++++++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 11 deletions(-) diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c index 17c9d22..8dbce22 100644 --- a/tools/h5diff/h5diff_main.c +++ b/tools/h5diff/h5diff_main.c @@ -252,7 +252,7 @@ int check_n_input( const char *str ) /*------------------------------------------------------------------------- * Function: check_f_input * - * Purpose: check for valid input + * Purpose: check for a valid floating point input * * Return: 1 for ok, -1 for fail * @@ -270,6 +270,13 @@ static int check_f_input( const char *str ) { double x; + + /* + the atof return value on a hexadecimal input is different + on some systems; we do a character check for this + */ + if (strlen(str)>2 && str[0]=='0' && str[1]=='x') + return -1; x=atof(str); if (x==0) diff --git a/tools/h5diff/testh5diff.sh b/tools/h5diff/testh5diff.sh index 43753e5..23cbfaa 100755 --- a/tools/h5diff/testh5diff.sh +++ b/tools/h5diff/testh5diff.sh @@ -202,7 +202,7 @@ TOOLTEST h5diff_604.txt file1.h5 file2.h5 -d 0 g1/dset3 g1/dset4 TOOLTEST h5diff_605.txt file1.h5 file2.h5 -d u g1/dset3 g1/dset4 # 6.6: hexadecimal -#TOOLTEST h5diff_606.txt file1.h5 file2.h5 -d 0x1 g1/dset3 g1/dset4 +TOOLTEST h5diff_606.txt file1.h5 file2.h5 -d 0x1 g1/dset3 g1/dset4 # 6.7: string TOOLTEST h5diff_607.txt file1.h5 file2.h5 -d "1" g1/dset3 g1/dset4 @@ -235,7 +235,7 @@ TOOLTEST h5diff_613.txt file1.h5 file2.h5 -p 0 g1/dset3 g1/dset4 TOOLTEST h5diff_614.txt file1.h5 file2.h5 -p u g1/dset3 g1/dset4 # 6.15: hexadecimal -#TOOLTEST h5diff_615.txt file1.h5 file2.h5 -p 0x1 g1/dset3 g1/dset4 +TOOLTEST h5diff_615.txt file1.h5 file2.h5 -p 0x1 g1/dset3 g1/dset4 # 6.16: string TOOLTEST h5diff_616.txt file1.h5 file2.h5 -p "0.21" g1/dset3 g1/dset4 diff --git a/tools/testfiles/h5diff_606.txt b/tools/testfiles/h5diff_606.txt index d20f2a9..fe5308c 100644 --- a/tools/testfiles/h5diff_606.txt +++ b/tools/testfiles/h5diff_606.txt @@ -1,11 +1,39 @@ ############################# Expected output for 'h5diff file1.h5 file2.h5 -d 0x1 g1/dset3 g1/dset4' ############################# -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 +<-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 + diff --git a/tools/testfiles/h5diff_615.txt b/tools/testfiles/h5diff_615.txt index 0519153..2f19008 100644 --- a/tools/testfiles/h5diff_615.txt +++ b/tools/testfiles/h5diff_615.txt @@ -1,3 +1,39 @@ ############################# 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 + -- cgit v0.12