summaryrefslogtreecommitdiffstats
path: root/c++/test
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
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')
-rw-r--r--c++/test/CMakeLists.txt1
-rw-r--r--c++/test/Makefile.am2
-rw-r--r--c++/test/Makefile.in11
-rw-r--r--c++/test/h5cpputil.h2
-rw-r--r--c++/test/tdspl.cpp144
-rw-r--r--c++/test/testhdf5.cpp1
6 files changed, 155 insertions, 6 deletions
diff --git a/c++/test/CMakeLists.txt b/c++/test/CMakeLists.txt
index 9966163..220d4b1 100644
--- a/c++/test/CMakeLists.txt
+++ b/c++/test/CMakeLists.txt
@@ -15,6 +15,7 @@ set (CPP_TEST_SRCS
${HDF5_CPP_TEST_SOURCE_DIR}/testhdf5.cpp
${HDF5_CPP_TEST_SOURCE_DIR}/tattr.cpp
${HDF5_CPP_TEST_SOURCE_DIR}/tcompound.cpp
+ ${HDF5_CPP_TEST_SOURCE_DIR}/tdspl.cpp
${HDF5_CPP_TEST_SOURCE_DIR}/tfile.cpp
${HDF5_CPP_TEST_SOURCE_DIR}/tfilter.cpp
${HDF5_CPP_TEST_SOURCE_DIR}/th5s.cpp
diff --git a/c++/test/Makefile.am b/c++/test/Makefile.am
index 3f62bda..74241f1 100644
--- a/c++/test/Makefile.am
+++ b/c++/test/Makefile.am
@@ -38,7 +38,7 @@ check_PROGRAMS=$(TEST_PROG)
LDADD=$(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5)
testhdf5_SOURCES=testhdf5.cpp dsets.cpp tattr.cpp tcompound.cpp \
- tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp trefer.cpp \
+ tdspl.cpp tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp trefer.cpp \
ttypes.cpp tvlstr.cpp h5cpputil.cpp
# Tell conclude.am that these are C++ tests.
diff --git a/c++/test/Makefile.in b/c++/test/Makefile.in
index 5e88a09..edf4fbf 100644
--- a/c++/test/Makefile.in
+++ b/c++/test/Makefile.in
@@ -87,10 +87,10 @@ CONFIG_CLEAN_FILES = H5srcdir_str.h
CONFIG_CLEAN_VPATH_FILES =
am__EXEEXT_1 = testhdf5$(EXEEXT)
am_testhdf5_OBJECTS = testhdf5.$(OBJEXT) dsets.$(OBJEXT) \
- tattr.$(OBJEXT) tcompound.$(OBJEXT) tfile.$(OBJEXT) \
- tfilter.$(OBJEXT) th5s.$(OBJEXT) tlinks.$(OBJEXT) \
- trefer.$(OBJEXT) ttypes.$(OBJEXT) tvlstr.$(OBJEXT) \
- h5cpputil.$(OBJEXT)
+ tattr.$(OBJEXT) tcompound.$(OBJEXT) tdspl.$(OBJEXT) \
+ tfile.$(OBJEXT) tfilter.$(OBJEXT) th5s.$(OBJEXT) \
+ tlinks.$(OBJEXT) trefer.$(OBJEXT) ttypes.$(OBJEXT) \
+ tvlstr.$(OBJEXT) h5cpputil.$(OBJEXT)
testhdf5_OBJECTS = $(am_testhdf5_OBJECTS)
testhdf5_LDADD = $(LDADD)
testhdf5_DEPENDENCIES = $(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5)
@@ -438,7 +438,7 @@ TEST_PROG = testhdf5
# The tests depend on the hdf5 library, test library, and the c++ library
LDADD = $(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5)
testhdf5_SOURCES = testhdf5.cpp dsets.cpp tattr.cpp tcompound.cpp \
- tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp trefer.cpp \
+ tdspl.cpp tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp trefer.cpp \
ttypes.cpp tvlstr.cpp h5cpputil.cpp
@@ -524,6 +524,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5cpputil.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tattr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcompound.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tdspl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testhdf5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tfile.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tfilter.Po@am__quote@
diff --git a/c++/test/h5cpputil.h b/c++/test/h5cpputil.h
index b107045..cc135bd 100644
--- a/c++/test/h5cpputil.h
+++ b/c++/test/h5cpputil.h
@@ -121,6 +121,7 @@ extern "C" {
#endif
void test_attr();
void test_compound();
+void test_dsproplist();
void test_file();
void test_filters();
void test_links();
@@ -133,6 +134,7 @@ void test_dset();
/* Prototypes for the cleanup routines */
void cleanup_attr();
void cleanup_compound();
+void cleanup_dsproplist();
void cleanup_dsets();
void cleanup_file();
void cleanup_filters();
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());
+}
diff --git a/c++/test/testhdf5.cpp b/c++/test/testhdf5.cpp
index fe08d6d..57210d0 100644
--- a/c++/test/testhdf5.cpp
+++ b/c++/test/testhdf5.cpp
@@ -84,6 +84,7 @@ main(int argc, char *argv[])
AddTest("tvlstr", test_vlstrings, cleanup_vlstrings, "Variable-Length Strings", NULL);
AddTest("ttypes", test_types, cleanup_types, "Generic Data Types", NULL);
AddTest("tcompound", test_compound, cleanup_compound, "Compound Data Types", NULL);
+ AddTest("tdspl", test_dsproplist, cleanup_dsproplist, "Dataset Property List", NULL);
AddTest("tfilter", test_filters, cleanup_filters, "Various Filters", NULL);
AddTest("tlinks", test_links, cleanup_links, "Various Links", NULL);
/* Comment out tests that are not done yet. - BMR, Feb 2001