diff options
author | Larry Knox <lrknox@hdfgroup.org> | 2021-05-05 03:41:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-05 03:41:38 (GMT) |
commit | b19b6e5e37ebf9233d81517688b79b32383f8be5 (patch) | |
tree | 3cb02e9ce63a3a92358c90faaafab31b17d9e4e8 /test/ttst.c | |
parent | 021d7c7278fd9c182802f2d5419438716beb37bc (diff) | |
download | hdf5-b19b6e5e37ebf9233d81517688b79b32383f8be5.zip hdf5-b19b6e5e37ebf9233d81517688b79b32383f8be5.tar.gz hdf5-b19b6e5e37ebf9233d81517688b79b32383f8be5.tar.bz2 |
Cherry-pick 12 develop branch PRs to hdf5_1_12 (#622)
* Snapshot version 1.12 release 1-3. Update version to 1.12.1-4.
* First cut of the H5 public API documentation. (#80)
* First cut of the H5 public API documentation.
* Added H5Z "bonus track."
* Applied Quincey's patch.
* Added the missing patches from Quincey's original patch.
* H5PL (complete) and basic H5VL API documentation.
* Added H5I API docs.
* Added H5L API docs.
* First installment from Elena's H5T batch.
* Second installment of Elena's H5T batch.
* Final installment of Elena's H5T batch.
* Full set of current H5F documentation. (#105)
* First cut of the H5 public API documentation.
* Added H5Z "bonus track."
* Applied Quincey's patch.
* Added the missing patches from Quincey's original patch.
* H5PL (complete) and basic H5VL API documentation.
* Added H5I API docs.
* Added H5L API docs.
* First installment from Elena's H5T batch.
* Second installment of Elena's H5T batch.
* Final installment of Elena's H5T batch.
* Migrated documentation for SWMR functions.
* Catching up on MDC functions.
* Integrated the H5F MDC function documentation.
* Added MDC and parallel H5F functions.
* Slightly updated main page.
* Added doxygen/dox/H5AC_cache_config_t.dox to MANIFEST.
* Doxygen - added (mostly) beginner functions (#112)
* Doxygen - added (mostly) beginner functions
* Removed duplicate H5Pset_szip function
* Add src/H5module.h to MANIFEST.
* close #195. (#196)
* Update HDF5PluginMacros.cmake
* Update HDF5PluginMacros.cmake
* Avoid aligned access for references by decoding into temporary buffer and then copying the result into the actual buffer. Update test to be more thorough with using compound datatype fields everywhere. (#206)
* Modify temporary rpath for testing in java example scripts. (#230)
* Fix undefined left shifting of negative numbers (#338)
Undefined Bahavior Sanitizer errored here about left shifting negative numbers.
* Fixes various warnings noticed on Windows (#425)
* Fixes various warnings noticed on Windows
- Adds a prototype for our implementation of vasprintf
- Return type of H5_get_utf16_str() is now non-const
- Fixes possible uninitialized return type in Wremove_utf8
- Better isolation of fork() code in accum.c:test_swmr_write_big()
- Better isolation of non-zlib code in dsets.c:test_filter_delete()
- Removed unused variable in trefer.c:test_reference_cmpnd_obj()
* Fixes clang-format issues
* Applied clang-tidy readability-non-const-parameter warning fixes auto… (#429)
* Automatically applied clang-tidy readability-avoid-const-params-in-decls fixes
Removes useless const declarations.
* Fixed most readability-non-const-parameter warnings
These changes were made automatically by clang-tidy, but I manually reverted the changes related to the H5Z_func_t signature.
* Reformat source with clang v10.0.1.
Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
* Added C++11 override keyword where appropriate (#433)
Added H5_OVERRIDE macro for compatibility with both C++11 and older.
* Various clang tidy warning fixes (#448)
* Fixed clang-tidy bugprone-reserved-identifier warnings
* Fixed clang-tidy bugprone-assert-side-effect warnings
* Fixed clang-tidy bugprone-copy-constructor-init warning
* Fixed clang-tidy readability-redundant-preprocessor warning
For error_test.c the removed code was already dead, because it was in the else of an `#if H5_USE_16_API` block.
Based on H5Location.h, I think p_get_ref_obj_type was meant to be in `#ifndef DOXYGEN_SHOULD_SKIP_THIS` and an `#endif` was missing. Similarly, in the header, getObjTypeByIdx is only in H5_NO_DEPRECATED_SYMBOLS, not DOXYGEN_SHOULD_SKIP_THIS.
* Fixed clang-tidy readability-redundant-string-init warnings
* Fixed some clang-tidy performance-type-promotion-in-math-fn warnings
* Fixed clang-tidy performance-unnecessary-value-param warnings
* Reformat source with clang v10.0.1.
Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
* Removed checks/workarounds for pre-C++89 compatibility (#449)
After 30+ years, just assume that the following exist:
- extension-less includes
- namespaces
- std::
- static_cast
- bool
* Fixed all clang-tidy bugprone-suspicious-string-compare warnings (#451)
* Fixed all clang-tidy bugprone-suspicious-string-compare warnings
This change was generated entirely by clang-tidy itself.
* Reformat code with clang v10.0.1.
Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
* Remove 2 functions incorrectly merged from develop in a cherry-pick merge of PR #451.
* Minor parallel improvements (#519)
* Improve MPI error reporting, handled failed operations in parallel tests more nicely, and clean up MPI_Allreduce for determining whether to break collective I/O
* Committing clang-format changes
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Clean up MPI-IO VFD tracing support (#520)
* Clean up tracing support
* Committing clang-format changes
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Brings the native implementation of H5Fdelete() from Bitbucket (#524)
* Committing clang-format changes
* Brings the native VFD H5Fdelete() implementation from Bitbucket
Only brings the 'del' callbacks, not the 'open/close' scheme.
* Formatter changes
* Committing clang-format changes
* Fixes direct VFD callback name
* Removes UNUSED macro from family API call
* Adds barrier and rank 0 check to MPI-I/O VFD delete
* Revert "Adds barrier and rank 0 check to MPI-I/O VFD delete"
This reverts commit 909765f759d9d96e84f4b8b1cc14f7d2b3ac8143.
* Revert "Revert "Adds barrier and rank 0 check to MPI-I/O VFD delete""
This reverts commit 9b04bef1157853fc79fcb8fcc3e8ba1371091702.
* Adds a second barrier after the delete in MPI-I/O VFD
* Only delete files in the core VFD when the backing store flag is set
* Fixes string issues in multi VFD
Also, h5test.c cleanup code now uses H5Fdelete().
* Formatted source
* Rework fapl checks for MPI-I/O VFD delete callback
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Minor warning fixes in develop (#526)
* Committing clang-format changes
* Minor warning fixes
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Removes implementation of my_strdup() from the multi VFD (#527)
* Committing clang-format changes
* Removes my_strdup() from the multi VFD
* Use strdup directly when memory sanity checks are off
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Removes dead H5ST package from the library (#528)
* Committing clang-format changes
* Removes the unused H5ST package from the library
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Fix HDFFV-11232 (#530)
* fixed missed closing of a dataset
* fixed missed closing of a dataset
* fixed typo in error return
* Committing clang-format changes
* minor edits
* code format
* Committing clang-format changes
* code format
* minor edit
* added H5fortkit dependency for H5VLff.F90, HDFFV-11232
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Fixes incorrect usage of H5I_BADID (#554)
* Committing clang-format changes
* Fixes incorrect use of H5I_BADID
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Fixes a segfault when H5Pset_mdc_log_options is called multiple times on a fapl (#601)
* Committing clang-format changes
* Fixes a segfault when H5Pset_mdc_log_options() is called multiple times
An internal string is incorrectly freed when the API call is invoked
multiple times on a property list, which will usually cause a segfault
to occur. On the first call the log location is NULL so the problem
doesn't occur.
Fixes HDFFV-11239
* Fixes typos
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Fix for a segfault when H5Pset_fapl_log is passed an invalid fapl ID (#607)
* Committing clang-format changes
* Fixes an issue where H5Pset_fapl_log sefaults when passed an invalid
fapl ID
This was due to a pointer-containing struct being memset after the first
internal API call. If the first call failed, the error condition would
check if the pointer was not NULL and then attempt to free it if not.
This would lead to the freeing of a wild pointer if an invalid fapl ID
were passed in.
This was fixed by reordering the memset and adding a test to ensure the
problem stays fixed.
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Fixes crashes when size_hint > UINT32_MAX is passed to H5Gcreate1 (#611)
* Committing clang-format changes
* Fixes incorrect size_hint handling in H5Gcreate1
* Updates the size hint type for group creation
* Updates the RELEASE.txt note
* Revert "Updates the RELEASE.txt note"
This reverts commit 3df386acca806d652bbe2209f7c4503b30f068ff.
* Reverts previous behavior to use a uint32_t struct field
* Updates RELEASE.txt
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Revert "Brings the native implementation of H5Fdelete() from Bitbucket (#524)"
This reverts commit 38d1b121ae428138b8863c2a319518c7363c2d94.
Co-authored-by: Gerd Heber <gheber@hdfgroup.org>
Co-authored-by: bljhdf <58825073+bljhdf@users.noreply.github.com>
Co-authored-by: H. Joe Lee <hyoklee@hdfgroup.org>
Co-authored-by: Quincey Koziol <quincey@koziol.cc>
Co-authored-by: Sean McBride <sean@rogue-research.com>
Co-authored-by: Dana Robinson <43805+derobins@users.noreply.github.com>
Co-authored-by: Quincey Koziol <koziol@lbl.gov>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Scot Breitenfeld <brtnfld@hdfgroup.org>
Diffstat (limited to 'test/ttst.c')
-rw-r--r-- | test/ttst.c | 391 |
1 files changed, 0 insertions, 391 deletions
diff --git a/test/ttst.c b/test/ttst.c deleted file mode 100644 index 07f118c..0000000 --- a/test/ttst.c +++ /dev/null @@ -1,391 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * 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 COPYING file, which can be found at the root of the source code * - * distribution tree, or in https://www.hdfgroup.org/licenses. * - * If you do not have access to either file, you may request a copy from * - * help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - FILE - tst.c - Test HDF Ternary Search Tree (tst) routines. - - REMARKS - - DESIGN - - BUGS/LIMITATIONS - - EXPORTED ROUTINES - - AUTHOR - Quincey Koziol - - MODIFICATION HISTORY - 12/9/02 - Started coding - */ - -#include "testhdf5.h" -#include "H5STprivate.h" - -/* Test words to insert into s TST */ -static const char *words[] = { - "We", "hold", "these", "truths", "to", "be", "self-evident,", - "that", "all", "men", "are", "created", "equal,", "that", - "they", "are", "endowed", "by", "their", "Creator", "with", - "certain", "unalienable", "Rights,", "that", "among", "these", "are", - "Life,", "Liberty", "and", "the", "pursuit", "of", "Happiness."}; -/* Number of words in test words set */ -size_t num_words; - -/* Number of unique words in test word set */ -size_t num_uniq_words; -/* Unique words in test word set */ -char **uniq_words; -/* Randomized order version of words in test word set */ -char **rand_uniq_words; -/* Sorted order version of words in test word set */ -char **sort_uniq_words; - -static int -tst_strcmp(const void *_s1, const void *_s2) -{ - return (HDstrcmp(*(const char *const *)_s1, *(const char *const *)_s2)); -} - -/**************************************************************** -** -** test_tst_init(): Test basic H5ST (ternary search tree) selection code. -** Initialize data for TST testing -** -****************************************************************/ -static void -test_tst_init(void) -{ - time_t curr_time; /* Current time, for seeding random number generator */ - char * tmp_word; /* Temporary pointer to word in word set */ - size_t u, v, w; /* Local index variables */ - - /* Compute the number of words in the test set */ - num_words = sizeof(words) / sizeof(words[0]); - - /* Determine the number of unique words in test set */ - /* (Not particularly efficient, be careful if many words are added to set) */ - num_uniq_words = 0; - for (u = 0; u < num_words; u++) { - /* Assume word is unique */ - num_uniq_words++; - for (v = 0; v < u; v++) - /* If word is already found in words looked at, decrement unique count */ - if (!HDstrcmp(words[u], words[v])) { - num_uniq_words--; - break; - } /* end if */ - } /* end for */ - - /* Allocate space for the array of unique words */ - uniq_words = (char **)HDmalloc(sizeof(char *) * num_uniq_words); - - /* Allocate space for the array of randomized order unique words also */ - rand_uniq_words = (char **)HDmalloc(sizeof(char *) * num_uniq_words); - - /* Allocate space for the array of sorted order unique words also */ - sort_uniq_words = (char **)HDmalloc(sizeof(char *) * num_uniq_words); - - /* Insert unique words from test set into unique word set */ - w = 0; - for (u = 0; u < num_words; u++) { - /* Assume word is unique */ - tmp_word = (char *)words[u]; - for (v = 0; v < u; v++) - /* If word is already found in words looked at, decrement unique count */ - if (!HDstrcmp(words[u], words[v])) { - tmp_word = NULL; - break; - } /* end if */ - - /* Check if word was actually unique */ - if (tmp_word != NULL) - uniq_words[w++] = tmp_word; - } /* end for */ - - /* Create randomized set of unique words */ - for (u = 0; u < num_uniq_words; u++) - rand_uniq_words[u] = uniq_words[u]; - curr_time = HDtime(NULL); - HDsrandom((unsigned)curr_time); - for (u = 0; u < num_uniq_words; u++) { - v = u + ((size_t)HDrandom() % (num_uniq_words - u)); - if (u != v) { - tmp_word = rand_uniq_words[u]; - rand_uniq_words[u] = rand_uniq_words[v]; - rand_uniq_words[v] = tmp_word; - } /* end if */ - } /* end for */ - - /* Create sorted set of unique words */ - for (u = 0; u < num_uniq_words; u++) - sort_uniq_words[u] = uniq_words[u]; - HDqsort(sort_uniq_words, num_uniq_words, sizeof(char *), tst_strcmp); -} /* end test_tst_init() */ - -/**************************************************************** -** -** test_tst_create(): Test basic H5ST (ternary search tree) selection code. -** Tests creating and closing TSTs. -** -****************************************************************/ -static void -test_tst_create(void) -{ - H5ST_tree_t *tree; /* TST created */ - herr_t ret; /* Generic return value */ - - /* Output message about test being performed */ - MESSAGE(5, ("Testing Creating & Closing TSTs\n")); - - /* Try closing a NULL tree */ - tree = NULL; - ret = H5ST_close(tree); - VERIFY(ret, FAIL, "H5ST_close"); - - /* Try creating a TST */ - tree = H5ST_create(); - CHECK_PTR(tree, "H5ST_create"); - - /* Try closing a real tree */ - ret = H5ST_close(tree); - CHECK(ret, FAIL, "H5ST_close"); - -} /* end test_tst_create() */ - -/**************************************************************** -** -** test_tst_insert(): Test basic H5ST (ternary search tree) selection code. -** Tests inserting key/value pairs into TST -** -****************************************************************/ -static void -test_tst_insert(void) -{ - H5ST_tree_t *tree; /* TST created */ - H5ST_ptr_t found; /* Pointer to TST node found */ - void * obj; /* Pointer to object located in TST */ - size_t u; /* Local index counter */ - htri_t check; /* Is string in TST? */ - herr_t ret; /* Generic return value */ - - /* Output message about test being performed */ - MESSAGE(5, ("Testing Inserting Values into TSTs\n")); - - /* Create the TST */ - tree = H5ST_create(); - CHECK_PTR(tree, "H5ST_create"); - - /* Insert unique words into TST, in random order */ - for (u = 0; u < num_uniq_words; u++) { - ret = H5ST_insert(tree, rand_uniq_words[u], rand_uniq_words[u]); - CHECK(ret, FAIL, "H5ST_insert"); - } /* end for */ - - /* Verify that all words were inserted into TST properly */ - for (u = 0; u < num_uniq_words; u++) { - /* Check that the word is present */ - check = H5ST_search(tree, uniq_words[u]); - VERIFY(check, TRUE, "H5ST_search"); - - /* Check that the value "payloads" are correct */ - found = H5ST_find(tree, uniq_words[u]); - CHECK_PTR(found, "H5ST_find"); - - if (HDstrcmp((const char *)found->eqkid, uniq_words[u]) != 0) - TestErrPrintf("%d: TST node values don't match!, found->eqkid=%s, uniq_words[%u]=%s\n", __LINE__, - (char *)found->eqkid, (unsigned)u, uniq_words[u]); - - obj = H5ST_locate(tree, uniq_words[u]); - CHECK_PTR(obj, "H5ST_locate"); - - if (HDstrcmp((const char *)obj, uniq_words[u]) != 0) - TestErrPrintf("%d: TST objects don't match!, obj=%s, uniq_words[%u]=%s\n", __LINE__, (char *)obj, - (unsigned)u, uniq_words[u]); - } /* end for */ - - /* Verify that words not in the TST aren't found */ - check = H5ST_search(tree, "foo"); - VERIFY(check, FALSE, "H5ST_search"); - check = H5ST_search(tree, "bar"); - VERIFY(check, FALSE, "H5ST_search"); - check = H5ST_search(tree, "baz"); - VERIFY(check, FALSE, "H5ST_search"); - - /* Close the TST */ - ret = H5ST_close(tree); - CHECK(ret, FAIL, "H5ST_close"); -} /* end test_tst_insert() */ - -/**************************************************************** -** -** test_tst_iterate(): Test basic H5ST (ternary search tree) code. -** Tests iterating through key/value pairs in TST -** -****************************************************************/ -static void -test_tst_iterate(void) -{ - H5ST_tree_t *tree; /* TST created */ - H5ST_ptr_t found; /* Pointer to TST node found */ - size_t u; /* Local index counter */ - herr_t ret; /* Generic return value */ - - /* Output message about test being performed */ - MESSAGE(5, ("Testing Iterating Over TSTs\n")); - - /* Create the TST */ - tree = H5ST_create(); - CHECK_PTR(tree, "H5ST_create"); - - /* Insert unique words into TST, in random order */ - for (u = 0; u < num_uniq_words; u++) { - ret = H5ST_insert(tree, rand_uniq_words[u], rand_uniq_words[u]); - CHECK(ret, FAIL, "H5ST_insert"); - } /* end for */ - - /* Use findfirst/findnext calls to iterate through TST */ - found = H5ST_findfirst(tree); - CHECK_PTR(found, "H5ST_findfirst"); - u = 0; - do { - /* Check that the strings in the TST are in the correct order */ - if (HDstrcmp((const char *)found->eqkid, sort_uniq_words[u]) != 0) - TestErrPrintf("%d: TST node values don't match!, found->eqkid=%s, sort_uniq_words[%u]=%s\n", - __LINE__, (char *)found->eqkid, (unsigned)u, sort_uniq_words[u]); - - /* Advance to next string in TST */ - found = H5ST_findnext(found); - u++; - } while (found != NULL); - - /* Close the TST */ - ret = H5ST_close(tree); - CHECK(ret, FAIL, "H5ST_close"); -} /* end test_tst_iterate() */ - -/**************************************************************** -** -** test_tst_remove(): Test basic H5ST (ternary search tree) code. -** Tests removing key/value pairs by string value in TST -** -****************************************************************/ -static void -test_tst_remove(void) -{ - H5ST_tree_t *tree; /* TST created */ - H5ST_ptr_t found; /* Pointer to TST node found */ - void * obj; /* Pointer to object removed from TST */ - htri_t check; /* Is string in TST? */ - size_t u; /* Local index counter */ - herr_t ret; /* Generic return value */ - - /* Output message about test being performed */ - MESSAGE(5, ("Testing Removing String Values from TSTs\n")); - - /* Create the TST */ - tree = H5ST_create(); - CHECK_PTR(tree, "H5ST_create"); - - /* Insert unique words into TST, in random order */ - for (u = 0; u < num_uniq_words; u++) { - ret = H5ST_insert(tree, rand_uniq_words[u], rand_uniq_words[u]); - CHECK(ret, FAIL, "H5ST_insert"); - } /* end for */ - - /* Remove strings from TST in random order */ - for (u = 0; u < num_uniq_words; u++) { - obj = H5ST_remove(tree, rand_uniq_words[u]); - CHECK_PTR(obj, "H5ST_remove"); - - /* Check that the correct string was removed from TST */ - if (HDstrcmp((const char *)obj, rand_uniq_words[u]) != 0) - TestErrPrintf("%d: TST node values don't match!, obj=%s, rand_uniq_words[%u]=%s\n", __LINE__, - (char *)obj, (unsigned)u, rand_uniq_words[u]); - - /* Check that the string can't be found in the TST any longer */ - check = H5ST_search(tree, rand_uniq_words[u]); - VERIFY(check, FALSE, "H5ST_search"); - } /* end for */ - - /* Re-insert unique words into TST, in random order */ - for (u = 0; u < num_uniq_words; u++) { - ret = H5ST_insert(tree, rand_uniq_words[u], rand_uniq_words[u]); - CHECK(ret, FAIL, "H5ST_insert"); - } /* end for */ - - /* Remove TST nodes from TST in random order */ - for (u = 0; u < num_uniq_words; u++) { - /* Get the pointer to the node to delete */ - found = H5ST_find(tree, rand_uniq_words[u]); - CHECK_PTR(found, "H5ST_find"); - - /* Check that the correct object will be removed from TST */ - if (HDstrcmp((const char *)found->eqkid, rand_uniq_words[u]) != 0) - TestErrPrintf("%d: TST node values don't match!, found->eqkid=%s, rand_uniq_words[%u]=%s\n", - __LINE__, (char *)found->eqkid, (unsigned)u, rand_uniq_words[u]); - - /* Remove the node */ - ret = H5ST_delete(tree, found); - CHECK(ret, FAIL, "H5ST_delete"); - - /* Check that the string can't be found in the TST any longer */ - check = H5ST_search(tree, rand_uniq_words[u]); - VERIFY(check, FALSE, "H5ST_search"); - } /* end for */ - - /* Close the TST */ - ret = H5ST_close(tree); - CHECK(ret, FAIL, "H5ST_close"); -} /* end test_tst_remove() */ - -/**************************************************************** -** -** test_tst_finalize(): Test basic H5ST (ternary search tree) selection code. -** Wrap up data for TST testing -** -****************************************************************/ -static void -test_tst_finalize(void) -{ - /* Release memory for unordered, randomized and sorted order unique words */ - HDfree(uniq_words); - HDfree(rand_uniq_words); - HDfree(sort_uniq_words); -} /* end test_tst_finalize() */ - -/**************************************************************** -** -** test_tst(): Main H5ST selection testing routine. -** -****************************************************************/ -void -test_tst(void) -{ - /* Output message about test being performed */ - MESSAGE(5, ("Testing Ternary Search Trees\n")); - - /* Initialize TST testing data */ - test_tst_init(); - - /* Actual TST tests */ - test_tst_create(); /* Test TST creation */ - test_tst_insert(); /* Test TST insertion */ - test_tst_iterate(); /* Test TST iteration */ - test_tst_remove(); /* Test TST deletion */ - - /* Finalize TST testing data */ - test_tst_finalize(); -} /* end test_tst() */ |