summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MANIFEST2
-rw-r--r--hl/tools/gif2h5/h52giftest.sh.in75
-rw-r--r--hl/tools/gif2h5/hdf2gif.c13
-rw-r--r--hl/tools/gif2h5/testfiles/REAMDE6
-rw-r--r--hl/tools/gif2h5/testfiles/ex_image2.h5bin0 -> 224533 bytes
5 files changed, 71 insertions, 25 deletions
diff --git a/MANIFEST b/MANIFEST
index 593ccde..3c1f856 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2333,6 +2333,8 @@
./hl/tools/gif2h5/writehdf.c
./hl/tools/gif2h5/h52gifgentst.c
./hl/tools/gif2h5/h52giftest.sh.in
+./hl/tools/gif2h5/testfiles/REAMDE
+./hl/tools/gif2h5/testfiles/ex_image2.h5
./hl/tools/gif2h5/testfiles/image1.gif
./hl/tools/gif2h5/testfiles/h52giftst.h5
diff --git a/hl/tools/gif2h5/h52giftest.sh.in b/hl/tools/gif2h5/h52giftest.sh.in
index 186b369..7aec219 100644
--- a/hl/tools/gif2h5/h52giftest.sh.in
+++ b/hl/tools/gif2h5/h52giftest.sh.in
@@ -18,6 +18,7 @@
TESTFILE1="$srcdir/testfiles/h52giftst.h5"
TESTFILE2="$srcdir/testfiles/image1.gif"
+TESTFILE3="$srcdir/testfiles/ex_image2.h5"
# initialize errors variable
errors=0
@@ -29,45 +30,69 @@ TESTING() {
-TOOLTEST1()
+# Verify the test runs with success (return code is 0)
+TOOLTEST()
{
- $RUNSERIAL ./h52gif $*
-
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- errors="` expr $errors + 1 `";
- else
- echo " PASSED"
- fi
+ # for now, discard any error messages generated.
+ $RUNSERIAL $* > /dev/null 2>&1
+
+ RET=$?
+ if [ $RET = 0 ] ; then
+ echo " PASSED"
+ else
+ echo "*FAILED*"
+ errors="` expr $errors + 1 `";
+ fi
}
-TOOLTEST2()
+# Verify the test runs with failure (return code is not 0)
+# Use for testing if tool can handle error conditions like
+# illegal input, bad arguments, exeeding limits, ...
+TOOLTESTFAIL()
{
- $RUNSERIAL ./gif2h5 $*
-
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- errors="` expr $errors + 1 `";
- else
- echo " PASSED"
- fi
+ # for now, discard any error messages generated.
+ $RUNSERIAL $* > /dev/null 2>&1
+
+ RET=$?
+ if [ $RET != 0 ] ; then
+ echo " PASSED"
+ else
+ echo "*FAILED*"
+ errors="` expr $errors + 1 `";
+ fi
}
+# Positive tests for gif2h5
+echo "**validate the gif2h5 tool processes input correctly..."
+TESTING "./gif2h5 image1.gif image1.h5"
+TOOLTEST ./gif2h5 $TESTFILE2 image1.h5
+echo ""
+# Positive tests for h52gif
+echo "**validate the h52gif tool processes input correctly..."
TESTING "./h52gif h52giftst.h5 image1.gif -i image"
-TOOLTEST1 $TESTFILE1 image1.gif -i image
-TESTING "./gif2h5 image1.gif image1.h5"
-TOOLTEST2 $TESTFILE2 image1.h5
+TOOLTEST ./h52gif $TESTFILE1 image1.gif -i image
+echo ""
+# Negative tests.
+echo "**verify the the h52gif tool handle error conditions correctly..."
+# nonexisting dataset name
+TESTING "./h52gif h52giftst.h5 image.gif -i nosuch_image"
+TOOLTESTFAIL "./h52gif $TESTFILE1 image.gif -i nosuch_image"
+# this test should have failed but it did not. Comment it out for now.
+#TESTING "./h52gif h52giftst.h5 image.gif -i palette"
+#TOOLTESTFAIL "./h52gif $TESTFILE1 image.gif -i palette"
+TESTING "./h52gif h52giftst.h5 image24.gif -i image24bitpixel"
+TOOLTESTFAIL "./h52gif $TESTFILE3 image24.gif -i image24bitpixel"
+echo ""
+# all done. summarize results.
if test $errors -eq 0 ; then
- echo "All h52gif tests passed."
+ echo "All gif2h5 and h52gif tests passed."
exit 0
else
- echo "h52gif tests failed with $errors errors."
+ echo "Some gif2h5 or h52gif tests failed with $errors errors."
exit 1
fi
diff --git a/hl/tools/gif2h5/hdf2gif.c b/hl/tools/gif2h5/hdf2gif.c
index fe79975..5c342ba 100644
--- a/hl/tools/gif2h5/hdf2gif.c
+++ b/hl/tools/gif2h5/hdf2gif.c
@@ -20,6 +20,8 @@
#include "h5tools.h"
#include "h5tools_utils.h"
+#define IMAGE_WIDTH_MAX 65535 /* unsigned 16bits integer */
+#define IMAGE_HEIGHT_MAX 65535 /* unsigned 16bits integer */
int EndianOrder;
@@ -147,6 +149,17 @@ int main(int argc , char **argv)
if ( H5IMget_image_info( fid, image_name, &width, &height, &planes, interlace, &npals ) < 0 )
goto out;
+ if (width > IMAGE_WIDTH_MAX || height > IMAGE_HEIGHT_MAX){
+ fprintf(stderr, "HDF5 image is too large. Limit is %d by %d.\n", IMAGE_WIDTH_MAX, IMAGE_HEIGHT_MAX);
+ goto out;
+ }
+
+ /* tool can handle single plane images only. */
+ if (planes > 1){
+ fprintf(stderr, "Cannot handle multiple planes image\n");
+ goto out;
+ }
+
Image = (BYTE*) malloc( (size_t) width * (size_t) height );
if ( H5IMread_image( fid, image_name, Image ) < 0 )
diff --git a/hl/tools/gif2h5/testfiles/REAMDE b/hl/tools/gif2h5/testfiles/REAMDE
new file mode 100644
index 0000000..a428d47
--- /dev/null
+++ b/hl/tools/gif2h5/testfiles/REAMDE
@@ -0,0 +1,6 @@
+ex_image2.h5
+ Generated by hl/examples/ex_image2.c
+5giftst.h5:
+ Generated by ../h52gifgentst.c
+image1.gif:
+ To be determined.
diff --git a/hl/tools/gif2h5/testfiles/ex_image2.h5 b/hl/tools/gif2h5/testfiles/ex_image2.h5
new file mode 100644
index 0000000..a36df1b
--- /dev/null
+++ b/hl/tools/gif2h5/testfiles/ex_image2.h5
Binary files differ