diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2014-03-31 00:48:46 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2014-03-31 00:48:46 (GMT) |
commit | 963bace0d15244768f28d549289e5e383ca9e421 (patch) | |
tree | 9d599884a8ce69cbfc1ac9b2e3663d76d2192896 /c++/test/tdspl.cpp | |
parent | 63c5964bb4112349dc006099159d02c3278c49f0 (diff) | |
download | hdf5-963bace0d15244768f28d549289e5e383ca9e421.zip hdf5-963bace0d15244768f28d549289e5e383ca9e421.tar.gz hdf5-963bace0d15244768f28d549289e5e383ca9e421.tar.bz2 |
[svn-r24928] 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.cpp | 144 |
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()); +} |