summaryrefslogtreecommitdiffstats
path: root/test/enc_dec_plist_with_endianess.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2012-09-25 15:47:25 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2012-09-25 15:47:25 (GMT)
commit6a89177036b5808ed0ce06ce0aab3af056b56984 (patch)
tree43367eb16716e1a2f074e2af07121e2723eae8d8 /test/enc_dec_plist_with_endianess.c
parent50e3990f2a9e3bba421460d8d5cb21bb6f6e98fe (diff)
downloadhdf5-6a89177036b5808ed0ce06ce0aab3af056b56984.zip
hdf5-6a89177036b5808ed0ce06ce0aab3af056b56984.tar.gz
hdf5-6a89177036b5808ed0ce06ce0aab3af056b56984.tar.bz2
[svn-r22807] Description:
Add encode/decode API routines for property lists: H5Pencode/H5Pdecode. Tested on: FreeBSD/32 8.2 (loyalty) w/gcc4.6, w/C++ & FORTRAN, in debug mode FreeBSD/64 8.2 (freedom) w/gcc4.6, w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (koala) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, w/threadsafe, in production mode Linux/PPC 2.6 (ostrich) w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-ia64 2.6 (ember) w/Intel compilers, w/parallel, C++ & FORTRAN, in production mode Mac OS X/32 10.7.3 (amazon) in debug mode Mac OS X/32 10.7.3 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode Mac OS X/32 10.7.3 (amazon) w/parallel, in debug mode
Diffstat (limited to 'test/enc_dec_plist_with_endianess.c')
-rw-r--r--test/enc_dec_plist_with_endianess.c160
1 files changed, 160 insertions, 0 deletions
diff --git a/test/enc_dec_plist_with_endianess.c b/test/enc_dec_plist_with_endianess.c
new file mode 100644
index 0000000..4469604
--- /dev/null
+++ b/test/enc_dec_plist_with_endianess.c
@@ -0,0 +1,160 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * 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://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Serial tests for encoding/decoding plists
+ */
+
+#include "h5test.h"
+#include "H5srcdir.h"
+
+static int test_plists(const char *filename1, const char *filename2);
+
+int
+main(void)
+{
+ if(VERBOSE_MED)
+ printf("Encode/Decode property list endianess\n");
+
+ /******* ENCODE/DECODE DCPLS *****/
+ TESTING("DCPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/dcpl_le", "testfiles/plist_files/dcpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE DAPLS *****/
+ TESTING("DAPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/dapl_le", "testfiles/plist_files/dapl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE DXPLS *****/
+ TESTING("DXPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/dxpl_le", "testfiles/plist_files/dxpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE GCPLS *****/
+ TESTING("GCPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/gcpl_le", "testfiles/plist_files/gcpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE LCPLS *****/
+ TESTING("LCPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/lcpl_le", "testfiles/plist_files/lcpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE LAPLS *****/
+ TESTING("LAPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/lapl_le", "testfiles/plist_files/lapl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE OCPLS *****/
+ TESTING("OCPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/ocpl_le", "testfiles/plist_files/ocpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE OCPYPLS *****/
+ TESTING("OCPYPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/ocpypl_le", "testfiles/plist_files/ocpypl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE FCPLS *****/
+ TESTING("FCPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/fcpl_le", "testfiles/plist_files/fcpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE FAPLS *****/
+ TESTING("FAPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/fapl_le", "testfiles/plist_files/fapl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE STRCPLS *****/
+ TESTING("STRCPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/strcpl_le", "testfiles/plist_files/strcpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ /******* ENCODE/DECODE ACPLS *****/
+ TESTING("ACPL Encoding/Decoding");
+ if(test_plists("testfiles/plist_files/acpl_le", "testfiles/plist_files/acpl_be") < 0)
+ FAIL_STACK_ERROR
+ PASSED();
+
+ return 0;
+
+error:
+ return 1;
+}
+
+static int
+test_plists(const char *filename1, const char *filename2)
+{
+ int fd_le, fd_be;
+ size_t size_le = 0, size_be = 0;
+ void *buf_le = NULL, *buf_be = NULL;
+ hid_t plist_le, plist_be; /* dataset create prop. list */
+ const char *testfile;
+
+ testfile = H5_get_srcdir_filename(filename1);
+ if((fd_le = HDopen(testfile, O_RDONLY, 0666)) < 0)
+ TEST_ERROR
+ size_le = HDlseek(fd_le, (HDoff_t)0, SEEK_END);
+ HDlseek(fd_le, (HDoff_t)0, SEEK_SET);
+ buf_le = (void *)HDmalloc(size_le);
+ if(HDread(fd_le, buf_le, size_le) < 0)
+ TEST_ERROR
+ HDclose(fd_le);
+
+ testfile = H5_get_srcdir_filename(filename2);
+ if((fd_be = HDopen(testfile, O_RDONLY, 0666)) < 0)
+ TEST_ERROR
+ size_be = HDlseek(fd_be, (HDoff_t)0, SEEK_END);
+ HDlseek(fd_be, (HDoff_t)0, SEEK_SET);
+ buf_be = (void *)HDmalloc(size_be);
+ if(HDread(fd_be, buf_be, size_be) < 0)
+ TEST_ERROR
+ HDclose(fd_be);
+
+ if((plist_le = H5Pdecode(buf_le)) < 0)
+ FAIL_STACK_ERROR
+ if((plist_be = H5Pdecode(buf_be)) < 0)
+ FAIL_STACK_ERROR
+
+ if(!H5Pequal(plist_le, plist_be))
+ FAIL_PUTS_ERROR("PLIST encoding/decoding comparison failed\n")
+
+ if((H5Pclose(plist_le)) < 0)
+ FAIL_STACK_ERROR
+ if((H5Pclose(plist_be)) < 0)
+ FAIL_STACK_ERROR
+
+ HDfree(buf_le);
+ HDfree(buf_be);
+
+ return 1;
+
+error:
+ printf("***** Plist Encode/Decode tests FAILED! *****\n");
+ return -1;
+}
+