1#!/bin/sh
2# HDF Utilities Test script
3# Usage: testutil.sh [machine-type]
4
5srcdir=@srcdir@
6
7machinetype="$1"
8
9# Check if target machine supports 32 bits datatype.
10# "true" is TRUE; "" means FALSE.
11case $machinetype in
12    *unicos*) has32="";;
13    *) has32="true";;
14esac
15
16# initialize errors variable
17errors=0
18haserr=0
19
20# setup hdfed command which is used often
21HDFED='../../hdf/util/hdfed'
22HDFLS="${TESTS_ENVIRONMENT} ../../hdf/util/hdfls"
23HDFEDCMD="${TESTS_ENVIRONMENT} $HDFED -batch"		# use -batch mode for no prompt
24SED="sed -e /library/,/String/d"  # filter out the library version
25TESTCMD="${TESTS_ENVIRONMENT} ./hdfimport"    # The test command
26
27echo ""
28echo "=============================="
29echo "HDFIMPORT tests started"
30echo "=============================="
31
32if [ -f hdfimport -a -f hdfimporttest ]; then
33echo "** Testing hdfimport  ***"
34
35# use [!S] to prevent SDSfloat2.hdf and SDSfloat3.hdf from being deleted;
36# please replace with better solution, one is if available. - BMR (2006/9/23)
37/bin/rm -f ctxt* cb* [!S]*.hdf *.out hdfls.tmp5 hdfed.tmp6 hdffiles.tmp
38${TESTS_ENVIRONMENT} ./hdfimporttest
39echo "Testing for 32-bit floating point ASCII (2D data)"
40$TESTCMD ctxtr2 -o ctxtr2.hdf
41echo "Testing for 32-bit floating point ASCII (3D data)"
42$TESTCMD ctxtr3 -o ctxtr3.hdf
43echo "Testing for 32-bit integer binary (2D data)"
44$TESTCMD cb32i2 -o cb32i2.hdf
45echo "Testing for 32-bit integer  binary (3D data)"
46$TESTCMD cb32i3 -o cb32i3.hdf
47echo "Testing for 16-bit integer binary (2D data)"
48$TESTCMD cb16i2 -o cb16i2.hdf
49echo "Testing for 16-bit integer (3D data)"
50$TESTCMD cb16i3 -o cb16i3.hdf
51echo "Testing for 32-bit floating point binary (2D data)"
52$TESTCMD cb32r2 -o cb32r2.hdf
53echo "Testing for 32-bit floating point binary (3D data)"
54$TESTCMD cb32r3 -o cb32r3.hdf
55echo "Testing for 64-bit floating point binary (2D data) - Default Behaviour (Conversion to 32 bit FP SDS)"
56$TESTCMD cb64r2 -o cb64r2.hdf
57echo "Testing for 64-bit floating point binary (3D data) - Default Behaviour (Conversion to 32-bit FP SDS)"
58$TESTCMD cb64r3 -o cb64r3.hdf
59echo "Testing for 64-bit floating point binary (2D data) - Conversion to 64-bit FP SDS"
60$TESTCMD cb64r2 -n -o cb64r2-n.hdf
61echo "Testing for 64-bit floating point binary (3D data) - Conversion to 64-bit FP SDS"
62$TESTCMD cb64r3 -n -o cb64r3-n.hdf
63echo "Testing for raster options"
64$TESTCMD ctxtr2 -o ctxtr2_ris.hdf -raster -e 50 50
65$TESTCMD cb64r2 -o cb64r2_ris.hdf -raster -i 50 50 -f
66
67# test with hdf files
68echo "Testing for reading from hdf files"
69$TESTCMD $srcdir/SDSfloat2.hdf -o SDSfloat2.out
70$TESTCMD $srcdir/SDSfloat3.hdf -o SDSfloat3.out
71
72($HDFLS -l ctxtr2.hdf | $SED) > hdfls.tmp5 2>&1
73($HDFLS -l ctxtr3.hdf | $SED) >> hdfls.tmp5 2>&1
74($HDFLS -l cb32i2.hdf | $SED) >> hdfls.tmp5 2>&1
75($HDFLS -l cb32i3.hdf | $SED) >> hdfls.tmp5 2>&1
76($HDFLS -l cb16i2.hdf | $SED) >> hdfls.tmp5 2>&1
77($HDFLS -l cb16i3.hdf | $SED) >> hdfls.tmp5 2>&1
78($HDFLS -l cb32r2.hdf | $SED) >> hdfls.tmp5 2>&1
79($HDFLS -l cb32r3.hdf | $SED) >> hdfls.tmp5 2>&1
80($HDFLS -l cb64r2.hdf | $SED) >> hdfls.tmp5 2>&1
81($HDFLS -l cb64r3.hdf | $SED) >> hdfls.tmp5 2>&1
82($HDFLS -l cb64r2-n.hdf | $SED) >> hdfls.tmp5 2>&1
83($HDFLS -l cb64r3-n.hdf | $SED) >> hdfls.tmp5 2>&1
84($HDFLS -l ctxtr2_ris.hdf | $SED) >> hdfls.tmp5 2>&1
85($HDFLS -l cb64r2_ris.hdf | $SED) >> hdfls.tmp5 2>&1
86
87# run hdfls on SDSfloat*.out, and remove the library version from the
88# output for later checking agains original output - BMR (2006/9/7)
89($HDFLS SDSfloat2.out | $SED) >> hdffiles.tmp 2>&1
90($HDFLS SDSfloat3.out | $SED) >> hdffiles.tmp 2>&1
91
92    diff  hdfls.tmp5 $srcdir/hdfimport.out1 || errors=1
93    $HDFEDCMD < $srcdir/hdfimport.input1 > hdfed.tmp6 2>&1
94    diff  hdfed.tmp6 $srcdir/hdfimport.out2 || errors=1
95
96    # hdfimport.out3 contains output that hdfls previously generated
97    # from SDSfloat*.out with the library version removed - BMR (2006/9/7)
98    diff  hdffiles.tmp $srcdir/hdfimport.out3 || errors=1
99
100# use [!S] to prevent SDSfloat2.hdf and SDSfloat3.hdf from being deleted;
101# please replace with a better solution, if one is available. - BMR (2006/9/23)
102/bin/rm -f ctxt* cb* [!S]*.hdf *.out hdfls.tmp5 hdfed.tmp6 hdffiles.tmp
103#/bin/rm -f ctxt* cb* *.hdf
104else
105haserr=1
106echo "** hdfimport or hdfimporttest not available ***"
107fi
108
109if [ $errors -eq 1 ]; then
110  haserr=1
111  echo " ********* NOTE ***************"
112  echo " hdfimport might have failed ***"
113  echo " The above errors could be formatting "
114  echo " problems which can be ignored "
115  echo " please run the following by hand to verify "
116  echo " "
117  echo "  /bin/rm -f ctxtr* cb* *.hdf hdfls.tmp5 hdfed.tmp6"
118  echo " ${TESTS_ENVIRONMENT} ./hdfimporttest "
119  echo " $TESTCMD ctxtr2 -o ctxtr2.hdf "
120  echo " $TESTCMD ctxtr3 -o ctxtr3.hdf "
121  echo " $TESTCMD cb32i2 -o cb32i2.hdf "
122  echo " $TESTCMD cb32i3 -o cb32i3.hdf "
123  echo " $TESTCMD cb16i2 -o cb16i2.hdf "
124  echo " $TESTCMD cb16i3 -o cb16i3.hdf "
125  echo " $TESTCMD cb32r2 -o cb32r2.hdf "
126  echo " $TESTCMD cb32r3 -o cb32r3.hdf "
127  echo " $TESTCMD cb64r2 -o cb64r2.hdf "
128  echo " $TESTCMD cb64r3 -o cb64r3.hdf "
129  echo " $TESTCMD cb64r2 -n -o cb64r2-n.hdf "
130  echo " $TESTCMD cb64r3 -n -o cb64r3-n.hdf "
131  echo " $TESTCMD ctxtr2 -o ctxtr2_ris.hdf -raster -e 50 50 "
132  echo " $TESTCMD cb64r2 -o cb64r2_ris.hdf -raster -i 50 50 -f "
133  echo " $TESTCMD SDSfloat2.hdf -o SDSfloat2.out "
134  echo " $TESTCMD SDSfloat3.hdf -o SDSfloat3.out "
135  echo "($HDFLS -l ctxtr2.hdf | $SED) >&  hdfls.tmp5 "
136  echo "($HDFLS -l ctxtr3.hdf | $SED) >>& hdfls.tmp5 "
137  echo "($HDFLS -l cb32i2.hdf | $SED) >> hdfls.tmp5 2>&1 "
138  echo "($HDFLS -l cb32i3.hdf | $SED) >> hdfls.tmp5 2>&1 "
139  echo "($HDFLS -l cb16i2.hdf | $SED) >> hdfls.tmp5 2>&1 "
140  echo "($HDFLS -l cb16i3.hdf | $SED) >> hdfls.tmp5 2>&1 "
141  echo "($HDFLS -l cb32r2.hdf | $SED) >>& hdfls.tmp5 "
142  echo "($HDFLS -l cb32r3.hdf | $SED) >>& hdfls.tmp5 "
143  echo "($HDFLS -l cb64r2.hdf | $SED) >>& hdfls.tmp5 "
144  echo "($HDFLS -l cb64r3.hdf | $SED) >>& hdfls.tmp5 "
145  echo "($HDFLS -l cb64r2-n.hdf | $SED) >> hdfls.tmp5 2>&1 "
146  echo "($HDFLS -l cb64r3-n.hdf | $SED) >> hdfls.tmp5 2>&1 "
147  echo "($HDFLS -l ctxtr2_ris.hdf | $SED) >>& hdfls.tmp5 "
148  echo "($HDFLS -l cb64r2_ris.hdf | $SED) >>& hdfls.tmp5 "
149  echo "($HDFLS SDSfloat2.out | $SED) >> hdffiles.tmp 2>&1 "
150  echo "($HDFLS SDSfloat3.out | $SED) >> hdffiles.tmp 2>&1 "
151  echo " diff hdfls.tmp5 hdfimport.out1 "
152  echo " $HDFEDCMD < hdfimport.input1 >& hdfed.tmp6 "
153  echo " diff hdfed.tmp6 hdfimport.out2 "
154  echo " diff  hdffiles.tmp hdfimport.out3 || errors=1 "
155  echo " ******* END NOTE *************"
156  echo ""
157  errors=0
158fi
159
160#
161# Check errors result
162if [ $haserr -eq 0 ]; then
163    echo "================================="
164    echo "HDFIMPORT Utilities tests passed."
165    echo "================================="
166else
167    echo "*********************************************"
168    echo "HDFIMPORT Utilities tests encountered errors"
169    echo "*********************************************"
170fi
171echo ""
172exit $haserr
173