You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2007/07/18 18:58:48 UTC
svn commit: r557332 -
/incubator/stdcxx/trunk/tests/localization/22.locale.globals.mt.cpp
Author: sebor
Date: Wed Jul 18 09:58:47 2007
New Revision: 557332
URL: http://svn.apache.org/viewvc?view=rev&rev=557332
Log:
2007-07-18 Martin Sebor <se...@roguewave.com>
* 22.locale.globals.mt.cpp (test_has_facet): Exercised has_facet
specializations on _byname facets only when not disabled on the
command line.
Added comments throughout.
Modified:
incubator/stdcxx/trunk/tests/localization/22.locale.globals.mt.cpp
Modified: incubator/stdcxx/trunk/tests/localization/22.locale.globals.mt.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/localization/22.locale.globals.mt.cpp?view=diff&rev=557332&r1=557331&r2=557332
==============================================================================
--- incubator/stdcxx/trunk/tests/localization/22.locale.globals.mt.cpp (original)
+++ incubator/stdcxx/trunk/tests/localization/22.locale.globals.mt.cpp Wed Jul 18 09:58:47 2007
@@ -31,9 +31,9 @@
#include <cwchar> // for mbstate_t
#include <cstring> // for strlen()
-#include <rw_locale.h>
-#include <rw_thread.h> // for rw_get_processors (), rw_thread_pool()
-#include <driver.h>
+#include <rw_locale.h> // for rw_locales()
+#include <rw_thread.h> // for rw_get_processors(), rw_thread_pool()
+#include <driver.h> // for rw_test()
// maximum number of threads allowed by the command line interface
@@ -64,8 +64,13 @@
opt_nfacets
};
+// tri-state options to enable/disable individual facets
+// opt_facets [i] < 0: facet is initially explicitly disabled
+// opt_facets [i] == 0: option not specified on the command line
+// opt_facets [i] > 0: facet is initially explicitly enabled
int opt_facets [opt_nfacets];
+// disable exceptions?
int opt_no_exceptions;
/**************************************************************************/
@@ -154,6 +159,7 @@
const bool byname = loc != classic;
+// call has_facet for each base facet only of it's enabled
#define HAS(Facet, opt) \
(0 <= opt_facets [opt_inx_ ## opt] ? std::has_facet<Facet>(loc) : true)
@@ -171,14 +177,19 @@
HAS (TimeGet, time_get);
HAS (TimePut, time_put);
- RW_ASSERT (byname == std::has_facet<CollateByname>(loc));
- RW_ASSERT (byname == std::has_facet<CtypeByname>(loc));
- RW_ASSERT (byname == std::has_facet<CodecvtByname>(loc));
- RW_ASSERT (byname == std::has_facet<MessagesByname>(loc));
- RW_ASSERT (byname == std::has_facet<Moneypunct0Byname>(loc));
- RW_ASSERT (byname == std::has_facet<Moneypunct1Byname>(loc));
- RW_ASSERT (byname == std::has_facet<TimeGetByname>(loc));
- RW_ASSERT (byname == std::has_facet<TimePutByname>(loc));
+// call has_facet for each _byname facet only of it's enabled
+#define HAS_BYNAME(Facet, opt) \
+ (0 <= opt_facets [opt_inx_ ## opt] ? \
+ byname == std::has_facet<Facet>(loc) : true)
+
+ HAS_BYNAME (CodecvtByname, codecvt);
+ HAS_BYNAME (CollateByname, collate);
+ HAS_BYNAME (CtypeByname, ctype);
+ HAS_BYNAME (MessagesByname, messages);
+ HAS_BYNAME (Moneypunct0Byname, moneypunct);
+ HAS_BYNAME (Moneypunct1Byname, moneypunct_intl);
+ HAS_BYNAME (TimeGetByname, time_get);
+ HAS_BYNAME (TimePutByname, time_put);
#ifndef _RWSTD_NO_WCHAR_T
@@ -196,14 +207,14 @@
HAS (WTimeGet, time_get);
HAS (WTimePut, time_put);
- RW_ASSERT (byname == std::has_facet<WCollateByname>(loc));
- RW_ASSERT (byname == std::has_facet<WCtypeByname>(loc));
- RW_ASSERT (byname == std::has_facet<WCodecvtByname>(loc));
- RW_ASSERT (byname == std::has_facet<WMessagesByname>(loc));
- RW_ASSERT (byname == std::has_facet<WMoneypunct0Byname>(loc));
- RW_ASSERT (byname == std::has_facet<WMoneypunct1Byname>(loc));
- RW_ASSERT (byname == std::has_facet<WTimeGetByname>(loc));
- RW_ASSERT (byname == std::has_facet<WTimePutByname>(loc));
+ HAS_BYNAME (WCodecvtByname, codecvt);
+ HAS_BYNAME (WCollateByname, collate);
+ HAS_BYNAME (WCtypeByname, ctype);
+ HAS_BYNAME (WMessagesByname, messages);
+ HAS_BYNAME (WMoneypunct0Byname, moneypunct);
+ HAS_BYNAME (WMoneypunct1Byname, moneypunct_intl);
+ HAS_BYNAME (WTimeGetByname, time_get);
+ HAS_BYNAME (WTimePutByname, time_put);
#endif // _RWSTD_NO_WCHAR_T
@@ -417,7 +428,6 @@
static int
run_test (int, char**)
{
-
for (std::size_t i = 0; i != opt_nfacets; ++i) {
if (0 < opt_facets [i]) {
for (std::size_t j = 0; j != opt_nfacets; ++j) {
@@ -566,11 +576,11 @@
"thread safety", run_test,
"|-has_facet~ "
"|-use_facet~ "
- "|-nloops#0 " // must be non-negative
- "|-nthreads#0-* " // must be in [0, MAX_THREADS]
- "|-locales= " // must be provided
- "|-no-exceptions# "
- "|-codecvt~ "
+ "|-nloops#0 " // arg must be non-negative
+ "|-nthreads#0-* " // arg must be in [0, MAX_THREADS]
+ "|-locales= " // argument must be provided
+ "|-no-exceptions# " // disable exceptions
+ "|-codecvt~ " // enable/disable individual facets
"|-collate~ "
"|-ctype~ "
"|-messages~ "