summaryrefslogtreecommitdiffstats
path: root/c++/test/tdspl.cpp
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2014-03-30 16:15:11 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2014-03-30 16:15:11 (GMT)
commitbe38074a2fc72d6040d280777cb9772bdf6c5587 (patch)
tree8a2f30063607ad5f28552f1b3bc1554b364c019b /c++/test/tdspl.cpp
parentd6cd6cabc2734d6548af4139ec912814174adb84 (diff)
downloadhdf5-be38074a2fc72d6040d280777cb9772bdf6c5587.zip
hdf5-be38074a2fc72d6040d280777cb9772bdf6c5587.tar.gz
hdf5-be38074a2fc72d6040d280777cb9772bdf6c5587.tar.bz2
[svn-r24925] Purpose: Fix HDFFV-7907
Description: Added transform property list functions // Constructor creates a dataset transform property list. DSetMemXferPropList(const char* expression); // Sets data transform expression. void setDataTransform(const char* expression) const; void setDataTransform(const H5std_string& expression) const; // Gets data transform expression. ssize_t getDataTransform(char* exp, size_t buf_size=0) const; H5std_string getDataTransform() const; Added test file tdspl.cpp. Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) SunOS 5.11 (emu)
Diffstat (limited to 'c++/test/tdspl.cpp')
-rw-r--r--c++/test/tdspl.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/c++/test/tdspl.cpp b/c++/test/tdspl.cpp
new file mode 100644
index 0000000..6364671
--- /dev/null
+++ b/c++/test/tdspl.cpp
@@ -0,0 +1,144 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*****************************************************************************
+ FILE
+ tdspl.cpp - HDF5 C++ testing the dataset memory and transfer property
+ list functionality
+
+ ***************************************************************************/
+
+#ifdef OLD_HEADER_FILENAME
+#include <iostream.h>
+#else
+#include <iostream>
+#endif
+#include <string>
+
+#ifndef H5_NO_NAMESPACE
+#ifndef H5_NO_STD
+ using std::cerr;
+ using std::endl;
+#endif // H5_NO_STD
+#endif
+
+#include "H5Cpp.h" // C++ API header file
+
+#ifndef H5_NO_NAMESPACE
+ using namespace H5;
+#endif
+
+#include "h5cpputil.h" // C++ utilility header file
+
+const H5std_string FILENAME("tdatatransform.h5");
+
+static void test_transfplist()
+{
+ const char* c_to_f = "(9/5.0)*x + 32";
+ const char* simple = "(4/2) * ( (2 + 4)/(5 - 2.5))"; /* this equals 4.8 */
+ /* inverses the utrans transform in init_test to get back original array */
+ const char* utrans_inv = "(x/3)*4 - 100";
+ char *c_to_f_read=NULL, *simple_read=NULL, *utrans_inv_read=NULL;
+
+ SUBTEST("DSetMemXferPropList::set/getDataTransform()");
+ try {
+ // Create various data set prop lists and set data transform expression.
+ DSetMemXferPropList dxpl_c_to_f(c_to_f);
+
+ DSetMemXferPropList dxpl_simple;
+ dxpl_simple.setDataTransform(simple);
+
+ DSetMemXferPropList dxpl_utrans_inv;
+ dxpl_utrans_inv.setDataTransform(utrans_inv);
+
+ //
+ // Make a copy of one of those prop lists then read the data transform
+ // expression and verify that it's the same as the original.
+ //
+
+ // Copy the prop list.
+ DSetMemXferPropList dxpl_c_to_f_copy;
+ dxpl_c_to_f_copy.copy(dxpl_c_to_f);
+
+ // Find out the length of the transform expression, allocate the buffer
+ // for it, then read and verify the expression from the copied plist
+ ssize_t tran_len = dxpl_c_to_f_copy.getDataTransform(NULL);
+ c_to_f_read = (char *)HDmalloc(tran_len+1);
+ HDmemset(c_to_f_read, 0, tran_len+1);
+ dxpl_c_to_f_copy.getDataTransform(c_to_f_read, tran_len+1);
+ verify_val((const char*)c_to_f_read, (const char*)c_to_f,
+ "DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+
+ //
+ // Read the expression of each of the prop lists and verify the read
+ // expression
+ //
+
+ // Get and verify the expression with:
+ // ssize_t getDataTransform(char* exp, const size_t buf_size [default=0])
+ tran_len = dxpl_c_to_f.getDataTransform(NULL);
+ HDmemset(c_to_f_read, 0, tran_len+1);
+ dxpl_c_to_f.getDataTransform(c_to_f_read, tran_len+1);
+ verify_val((const char*)c_to_f_read, (const char*)c_to_f,
+ "DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+
+ // Get and verify the expression with:
+ // H5std_string DSetMemXferPropList::getDataTransform()
+ H5std_string simple_read = dxpl_simple.getDataTransform();
+ verify_val((const char*)simple_read.c_str(), (const char*)simple,
+ "DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+
+ // Get and verify the expression with:
+ // ssize_t getDataTransform(char* exp, const size_t buf_size)
+ tran_len = dxpl_utrans_inv.getDataTransform(NULL, 0);
+ utrans_inv_read = (char *)HDmalloc(tran_len+1);
+ HDmemset(utrans_inv_read, 0, tran_len+1);
+ dxpl_utrans_inv.getDataTransform(utrans_inv_read, tran_len+1);
+ verify_val((const char*)utrans_inv_read, (const char*)utrans_inv,
+ "DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+
+ PASSED();
+ }
+ catch (Exception E) {
+ issue_fail_msg("test_transfplist", __LINE__, __FILE__, E.getCDetailMsg());
+ }
+}
+
+
+/****************************************************************
+**
+** test_dsproplist(): Main dataset property list testing routine.
+**
+****************************************************************/
+#ifdef __cplusplus
+extern "C"
+#endif
+void test_dsproplist()
+{
+ // Output message about test being performed
+ MESSAGE(5, ("Testing Generic Dataset Property Lists\n"));
+
+ test_transfplist(); // test set/getDataTransform()
+
+} // test_dsproplist()
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+void cleanup_dsproplist()
+{
+ HDremove(FILENAME.c_str());
+}