mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-11 16:01:00 +08:00
added new test files for h5diff bug fix Description: the criteria for determining the correct switch case cast to void* to type* was the data size read from disk. this was causing problems on Cray T3E, where all integer except char are 8 bytes long Solution: changed the criteria for using the memory size instead, which is determined by the same function that reads the data into memory the messages " using memory NATIVE_TYPE_X" were removed, because they might not coincid on different platforms. Platforms tested: Linux 2.4 (rockaway) SunOS 5.7 (arabica) IRIX 6.5 (modi4) Misc. update:
445 lines
15 KiB
Bash
Executable File
445 lines
15 KiB
Bash
Executable File
#! /bin/sh
|
||
#
|
||
# Copyright by the Board of Trustees of the University of Illinois.
|
||
# All rights reserved.
|
||
#
|
||
# This file is part of HDF5. The full HDF5 copyright notice, including
|
||
# terms governing use, modification, and redistribution, is contained in
|
||
# the files COPYING and Copyright.html. COPYING can be found at the root
|
||
# of the source code distribution tree; Copyright.html can be found at the
|
||
# root level of an installed copy of the electronic HDF5 document set and
|
||
# is linked from the top-level documents page. It can also be found at
|
||
# http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
|
||
# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
|
||
#
|
||
# Tests for the h5diff tool
|
||
|
||
H5DIFF=h5diff # The tool name
|
||
H5DIFF_BIN=`pwd`/$H5DIFF # The path of the tool binary
|
||
|
||
CMP='cmp -s'
|
||
DIFF='diff -c'
|
||
|
||
nerrors=0
|
||
verbose=yes
|
||
|
||
# The build (current) directory might be different than the source directory.
|
||
if test -z "$srcdir"; then
|
||
srcdir=.
|
||
fi
|
||
|
||
test -d ../testfiles || mkdir ../testfiles
|
||
|
||
# Print a line-line message left justified in a field of 70 characters
|
||
# beginning with the word "Testing".
|
||
#
|
||
TESTING() {
|
||
SPACES=" "
|
||
echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
|
||
}
|
||
|
||
# Run a test and print PASS or *FAIL*. If a test fails then increment
|
||
# the `nerrors' global variable and (if $verbose is set) display the
|
||
# difference between the actual output and the expected output. The
|
||
# expected output is given as the first argument to this function and
|
||
# the actual output file is calculated by replacing the `.ddl' with
|
||
# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a
|
||
# non-zero value.
|
||
#
|
||
TOOLTEST() {
|
||
expect="$srcdir/../testfiles/$1"
|
||
actual="../testfiles/`basename $1 .txt`.out"
|
||
actual_err="../testfiles/`basename $1 .txt`.err"
|
||
shift
|
||
|
||
# Run test.
|
||
# Tflops interprets "$@" as "" when no parameter is given (e.g., the
|
||
# case of missing file name). Changed it to use $@ till Tflops fixes it.
|
||
TESTING $H5DIFF $@
|
||
(
|
||
echo "#############################"
|
||
echo "Expected output for '$H5DIFF $@'"
|
||
echo "#############################"
|
||
cd $srcdir/../testfiles
|
||
if [ "`uname -s`" = "TFLOPS O/S" ]; then
|
||
$RUNSERIAL $H5DIFF_BIN $@
|
||
else
|
||
$RUNSERIAL $H5DIFF_BIN "$@"
|
||
fi
|
||
) >$actual 2>$actual_err
|
||
cat $actual_err >> $actual
|
||
|
||
if $CMP $expect $actual; then
|
||
echo " PASSED"
|
||
else
|
||
echo "*FAILED*"
|
||
echo " Expected result (*.txt) differs from actual result (*.out)"
|
||
nerrors="`expr $nerrors + 1`"
|
||
test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /'
|
||
fi
|
||
|
||
# Clean up output file
|
||
if test -z "$HDF5_NOCLEANUP"; then
|
||
rm -f $actual $actual_err
|
||
fi
|
||
}
|
||
|
||
##############################################################################
|
||
##############################################################################
|
||
### T H E T E S T S ###
|
||
##############################################################################
|
||
##############################################################################
|
||
|
||
##############################################################################
|
||
# tests 0., Check for individual options
|
||
##############################################################################
|
||
|
||
# test 0.1: Check if the command line number of arguments is less than 3
|
||
TOOLTEST h5diff_01.txt h5diff_test1.h5
|
||
|
||
# test 0.2: Check for invalid options
|
||
TOOLTEST h5diff_02.txt -x h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.3.1: Check for -h option
|
||
TOOLTEST h5diff_031.txt -h h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.3.3: Check for -r option
|
||
TOOLTEST h5diff_033.txt -r h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# Test -d option
|
||
##############################################################################
|
||
|
||
|
||
# test 0.4.1: no value
|
||
TOOLTEST h5diff_041.txt -d h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.2: negative value
|
||
TOOLTEST h5diff_042.txt -d -4 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.3: zero
|
||
TOOLTEST h5diff_043.txt -d 0 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.4: non number
|
||
TOOLTEST h5diff_044.txt -d u h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.5: hexadecimal
|
||
TOOLTEST h5diff_045.txt -d 0x1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.6: string
|
||
TOOLTEST h5diff_046.txt -d "1" h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.7: repeated value
|
||
TOOLTEST h5diff_047.txt -d 1 -d 2 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.8: number larger than biggest difference
|
||
TOOLTEST h5diff_048.txt dset2.1a dset2.1b -d 7 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.9: number smaller than smallest difference
|
||
TOOLTEST h5diff_049.txt dset2.1a dset2.1b -d 1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.4.10: non-integer
|
||
TOOLTEST h5diff_0410.txt dset2.1a dset2.1b -d 2.3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# Test -p option
|
||
##############################################################################
|
||
|
||
|
||
# test 0.5.1: no value
|
||
TOOLTEST h5diff_051.txt -p h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.2: negative value
|
||
TOOLTEST h5diff_052.txt -p -4 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.3: zero
|
||
TOOLTEST h5diff_053.txt -p 0 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.4: non number
|
||
TOOLTEST h5diff_054.txt -p u h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.5: hexadecimal
|
||
TOOLTEST h5diff_055.txt -p 0x1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.6: string
|
||
TOOLTEST h5diff_056.txt -p "1" h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.7: repeated value
|
||
TOOLTEST h5diff_057.txt -p 1 -p 2 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.8: number larger than biggest difference
|
||
TOOLTEST h5diff_058.txt dset2.1a dset2.1b -p 7 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.9: number smaller than smallest difference
|
||
TOOLTEST h5diff_059.txt dset2.1a dset2.1b -p 1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.5.10: non-integer
|
||
TOOLTEST h5diff_0510.txt dset2.1a dset2.1b -p 2.3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# Test -n option
|
||
##############################################################################
|
||
|
||
|
||
# test 0.6.1: no value
|
||
TOOLTEST h5diff_061.txt -n h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.2: negative value
|
||
TOOLTEST h5diff_062.txt -n -4 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.3: zero
|
||
TOOLTEST h5diff_063.txt -n 0 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.4: non number
|
||
TOOLTEST h5diff_064.txt -n u h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.5: hexadecimal
|
||
TOOLTEST h5diff_065.txt -n 0x1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.6: string
|
||
TOOLTEST h5diff_066.txt -n "1" h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.7: repeated value
|
||
TOOLTEST h5diff_067.txt -n 1 -n 2 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.8: number larger than biggest difference
|
||
TOOLTEST h5diff_068.txt dset2.1a dset2.1b -n 7 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.9: number smaller than smallest difference
|
||
TOOLTEST h5diff_069.txt dset2.1a dset2.1b -n 1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 0.6.10: non-integer
|
||
TOOLTEST h5diff_0610.txt dset2.1a dset2.1b -n 2.3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# Test valid files
|
||
##############################################################################
|
||
|
||
# test 0.7: Check if the file names supplied are valid files
|
||
TOOLTEST h5diff_07.txt h5diff_test1.h6 h5diff_test2.h6
|
||
|
||
|
||
##############################################################################
|
||
# Check for not comparable issues
|
||
##############################################################################
|
||
|
||
##############################################################################
|
||
# Different types
|
||
##############################################################################
|
||
|
||
# test 1.1.1: Compare a dataset with a group
|
||
TOOLTEST h5diff_111.txt dset1.1 g1.1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 1.1.2 Dataset vs Link
|
||
TOOLTEST h5diff_112.txt dset1.1 soft h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.1.3 Dataset vs Named type
|
||
TOOLTEST h5diff_113.txt dset1.1 compound h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
##############################################################################
|
||
# not comparable types
|
||
##############################################################################
|
||
|
||
# test 1.2.1: Group vs Group
|
||
TOOLTEST h5diff_121.txt g1.1 g1.1 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 1.2.2: Type vs Type
|
||
TOOLTEST h5diff_122.txt compound h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 1.2.3: Link vs Link
|
||
TOOLTEST h5diff_123.txt soft soft h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
|
||
##############################################################################
|
||
# Class issues
|
||
##############################################################################
|
||
|
||
# test 1.3.1: H5T_STRING
|
||
TOOLTEST h5diff_131.txt dset1.3.1 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.3.2: H5T_BITFIELD
|
||
TOOLTEST h5diff_132.txt dset1.3.2 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.3.3: H5T_OPAQUE
|
||
TOOLTEST h5diff_133.txt dset1.3.3 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.3.4: H5T_COMPOUND
|
||
TOOLTEST h5diff_134.txt dset1.3.4 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.3.5: H5T_REFERENCE
|
||
TOOLTEST h5diff_135.txt dset1.3.5 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.3.6: H5T_ENUM
|
||
TOOLTEST h5diff_136.txt dset1.3.6 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.3.7: H5T_VLEN
|
||
TOOLTEST h5diff_137.txt dset1.3.7 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
# test 1.3.8: H5T_ARRAY
|
||
TOOLTEST h5diff_138.txt dset1.3.8 h5diff_test1.h5 h5diff_test1.h5
|
||
|
||
|
||
# test 1.4: Compare integer with float
|
||
TOOLTEST h5diff_14.txt dset1.1 dset1.4 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 1.5 : Check for the same rank, for datasets
|
||
TOOLTEST h5diff_15.txt dset1.1 dset1.5 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 1.6: Check for the same current dimensions. Only compare if they are the same.
|
||
TOOLTEST h5diff_16.txt dset1.1 dset1.6 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 1.7: Check for the same maximum dimensions. Give a warning if they are different.
|
||
TOOLTEST h5diff_17.txt dset1.7 dset1.7 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 1.8: Check for the same storage datatype. Give a warning if they are different.
|
||
TOOLTEST h5diff_18.txt dset1.8 dset1.8 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
|
||
##############################################################################
|
||
# tests 2., Different datatype sizes and different mix of options
|
||
##############################################################################
|
||
|
||
##############################################################################
|
||
# H5T_INTEGER size 1<>
|
||
##############################################################################
|
||
|
||
# test 2.1.0
|
||
TOOLTEST h5diff_210.txt dset2.1 dset2.2 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 2.1.1
|
||
TOOLTEST h5diff_211.txt dset2.1 dset2.2 -n 2 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 2.1.2
|
||
TOOLTEST h5diff_212.txt dset2.1 dset2.2 -d 3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
# test 2.1.3
|
||
TOOLTEST h5diff_213.txt dset2.1a dset2.1b -p 3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# H5T_INTEGER size 2
|
||
##############################################################################
|
||
|
||
# test 2.2.0
|
||
TOOLTEST h5diff_220.txt dset2.2a dset2.2b h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.2.1
|
||
TOOLTEST h5diff_221.txt dset2.2a dset2.2b -n 2 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.2.2
|
||
TOOLTEST h5diff_222.txt dset2.2a dset2.2b -d 3 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.2.3
|
||
TOOLTEST h5diff_223.txt dset2.2a dset2.2b -p 3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# H5T_INTEGER size 4
|
||
##############################################################################
|
||
|
||
# test 2.3.0
|
||
TOOLTEST h5diff_230.txt dset2.3a dset2.3b h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.3.1
|
||
TOOLTEST h5diff_231.txt dset2.3a dset2.3b -n 2 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.3.2
|
||
TOOLTEST h5diff_232.txt dset2.3a dset2.3b -d 3 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.3.3
|
||
TOOLTEST h5diff_233.txt dset2.3a dset2.3b -p 3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# H5T_INTEGER size 8
|
||
##############################################################################
|
||
|
||
# test 2.4.0
|
||
TOOLTEST h5diff_240.txt dset2.4a dset2.4b h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.4.1
|
||
TOOLTEST h5diff_241.txt dset2.4a dset2.4b -n 2 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.4.2
|
||
TOOLTEST h5diff_242.txt dset2.4a dset2.4b -d 3 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.4.3
|
||
TOOLTEST h5diff_243.txt dset2.4a dset2.4b -p 3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# H5T_FLOAT size 4
|
||
##############################################################################
|
||
|
||
# test 2.5.0
|
||
TOOLTEST h5diff_250.txt dset2.5a dset2.5b h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.5.1
|
||
TOOLTEST h5diff_251.txt dset2.5a dset2.5b -n 2 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.5.2
|
||
TOOLTEST h5diff_252.txt dset2.5a dset2.5b -d 3 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.5.3
|
||
TOOLTEST h5diff_253.txt dset2.5a dset2.5b -p 3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
##############################################################################
|
||
# H5T_FLOAT size 8
|
||
##############################################################################
|
||
|
||
# test 2.6.0
|
||
TOOLTEST h5diff_260.txt dset2.6a dset2.6b h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.6.1
|
||
TOOLTEST h5diff_261.txt dset2.6a dset2.6b -n 2 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.6.2
|
||
TOOLTEST h5diff_262.txt dset2.6a dset2.6b -d 3 h5diff_test1.h5 h5diff_test2.h5
|
||
# test 2.6.3
|
||
TOOLTEST h5diff_263.txt dset2.6a dset2.6b -p 3 h5diff_test1.h5 h5diff_test2.h5
|
||
|
||
|
||
#######################################################
|
||
# Different combination of objects
|
||
#######################################################
|
||
|
||
# test 3.0
|
||
TOOLTEST h5diff_30.txt h5diff_test3.h5 h5diff_test4.h5
|
||
|
||
# test 3.1
|
||
TOOLTEST h5diff_31.txt dset_A dset_A h5diff_test3.h5 h5diff_test4.h5
|
||
|
||
# test 3.2
|
||
TOOLTEST h5diff_32.txt dset_A dset_B h5diff_test3.h5 h5diff_test4.h5
|
||
|
||
# test 3.3
|
||
TOOLTEST h5diff_33.txt dset_C dset_A h5diff_test3.h5 h5diff_test4.h5
|
||
|
||
# test 3.4
|
||
TOOLTEST h5diff_34.txt dset_C dset_C h5diff_test3.h5 h5diff_test4.h5
|
||
|
||
#######################################################
|
||
# reverse direction
|
||
#######################################################
|
||
|
||
# test 3.5
|
||
TOOLTEST h5diff_35.txt h5diff_test4.h5 h5diff_test3.h5
|
||
|
||
#######################################################
|
||
# Different paths
|
||
#######################################################
|
||
|
||
# test 4.0: should find
|
||
TOOLTEST h5diff_40.txt g1/dset1 g2/dset1 h5diff_test5.h5 h5diff_test6.h5
|
||
|
||
# test 4.1.1: should NOT find
|
||
TOOLTEST h5diff_411.txt dset1 dset1 h5diff_test5.h5 h5diff_test6.h5
|
||
|
||
# test 4.1.2: should NOT find
|
||
TOOLTEST h5diff_412.txt /g1/dset1 dset1 h5diff_test5.h5 h5diff_test6.h5
|
||
|
||
# test 4.1.3: should NOT find
|
||
TOOLTEST h5diff_413.txt /g1/dset1 /g1/dset1 h5diff_test5.h5 h5diff_test6.h5
|
||
|
||
#######################################################
|
||
# paths with several components
|
||
#######################################################
|
||
|
||
# test 4.2.1:
|
||
TOOLTEST h5diff_421.txt /a/b/c /a/b/c h5diff_test5.h5 h5diff_test6.h5
|
||
|
||
# test 4.2.2:
|
||
TOOLTEST h5diff_422.txt /x/a/c /a/b/c h5diff_test5.h5 h5diff_test6.h5
|
||
|
||
|
||
|
||
|
||
|
||
if test $nerrors -eq 0 ; then
|
||
echo "All $H5DIFF tests passed."
|
||
fi
|
||
|
||
exit $nerrors
|