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/09/05 18:09:21 UTC
svn commit: r572982 -
/incubator/stdcxx/trunk/tests/localization/22.locale.money.get.cpp
Author: sebor
Date: Wed Sep 5 09:09:21 2007
New Revision: 572982
URL: http://svn.apache.org/viewvc?rev=572982&view=rev
Log:
2007-08-28 Travis Vitek <vi...@roguewave.com>
STDCXX-413
* 22.locale.money.get (do_test): move intl param to front of param
list to avoid modifying many lines of code unnecessarily.
(test_get): update to support testing international money format,
add overload to test both local and international money formats.
Modified:
incubator/stdcxx/trunk/tests/localization/22.locale.money.get.cpp
Modified: incubator/stdcxx/trunk/tests/localization/22.locale.money.get.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/localization/22.locale.money.get.cpp?rev=572982&r1=572981&r2=572982&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/localization/22.locale.money.get.cpp (original)
+++ incubator/stdcxx/trunk/tests/localization/22.locale.money.get.cpp Wed Sep 5 09:09:21 2007
@@ -242,7 +242,8 @@
/**************************************************************************/
template <class charT>
-void do_test (charT which, // which overload to exercise
+void do_test (bool intl, // international?
+ charT which, // which overload to exercise
const char *cname, // the name of the charT type
const char *tname, // the name of the floating point type
int lineno, // line number
@@ -254,8 +255,7 @@
int frac_digits = 0, // fractional digits
const char *fmat = 0, // money_base::pattern
const char *cursym = 0, // currency symbol
- const char *grouping = "", // grouping string
- bool intl = false) // international?
+ const char *grouping = "") // grouping string
{
if (!rw_enabled (lineno)) {
rw_note (0, __FILE__, __LINE__, "test on line %d disabled", lineno);
@@ -448,11 +448,13 @@
template <class charT>
-void test_get (charT opt, const char *cname, const char *tname)
+void test_get (charT opt, const char *cname, const char *tname, bool intl)
{
-#define T opt, cname, tname, __LINE__
+#define T intl, opt, cname, tname, __LINE__
#define TEST do_test
+ const bool locl = !intl;
+
rw_info (0, 0, 0,
"money_get<%s, istreambuf_iterator<%s> >::get "
"(..., %s&) const", cname, cname, tname);
@@ -466,12 +468,12 @@
// by decimal_point(). The other symbols are defined as follows:
// units ::= digits [ thousandssep units ] digits ::= adigit [ digits ]
- PunctData<charT>::positive_sign_ [0] = 0;
- PunctData<charT>::positive_sign_ [1] = 0;
- PunctData<charT>::negative_sign_ [0] = 0;
- PunctData<charT>::negative_sign_ [1] = 0;
- PunctData<charT>::thousands_sep_ [0] = '\0';
- PunctData<charT>::thousands_sep_ [1] = '\0';
+ PunctData<charT>::positive_sign_ [intl] = 0;
+ PunctData<charT>::positive_sign_ [locl] = 0;
+ PunctData<charT>::negative_sign_ [intl] = 0;
+ PunctData<charT>::negative_sign_ [locl] = 0;
+ PunctData<charT>::thousands_sep_ [intl] = '\0';
+ PunctData<charT>::thousands_sep_ [locl] = '\0';
// parsing zero, no curr_symbol or sign, default pattern, 0 frac_digits
TEST (T, 0.0, "0", 1, 0, eofbit);
@@ -539,8 +541,8 @@
TEST (T, 54321098.0, "5432.1098", 9, 0, eofbit, 4);
TEST (T, 432109870.0, "43210.987", 9, 0, eofbit, 4);
- PunctData<charT>::thousands_sep_ [0] = ',';
- PunctData<charT>::thousands_sep_ [1] = ';';
+ PunctData<charT>::thousands_sep_ [intl] = ',';
+ PunctData<charT>::thousands_sep_ [locl] = ';';
// parsing with thousands_sep and/or grouping
TEST (T, 0.0, "0", 1, 0, eofbit, 0, 0, "", "\1");
@@ -614,10 +616,10 @@
static const charT plus[][2] = { { '+', '\0' }, { '\0' } };
static const charT minus[][2] = { { '-', '\0' }, { '\0' } };
- PunctData<charT>::positive_sign_ [0] = plus [0];
- PunctData<charT>::negative_sign_ [0] = minus [0];
- PunctData<charT>::positive_sign_ [1] = plus [1];
- PunctData<charT>::negative_sign_ [1] = minus [1];
+ PunctData<charT>::positive_sign_ [intl] = plus [0];
+ PunctData<charT>::negative_sign_ [intl] = minus [0];
+ PunctData<charT>::positive_sign_ [locl] = plus [1];
+ PunctData<charT>::negative_sign_ [locl] = minus [1];
TEST (T, 15.0, "+15", 3, 0, eofbit, 0, 0, "");
TEST (T, 16.0, "+ 16", 4, 0, eofbit, 0, 0, "");
@@ -647,10 +649,10 @@
static const charT plus_plus[][3] = { { '+', '+', '\0' }, { '\0' } };
static const charT minus_minus[][3] = { { '-', '-', '\0' }, { '\0' } };
- PunctData<charT>::positive_sign_ [0] = plus_plus [0];
- PunctData<charT>::negative_sign_ [0] = minus_minus [0];
- PunctData<charT>::positive_sign_ [1] = plus_plus [1];
- PunctData<charT>::negative_sign_ [1] = minus_minus [1];
+ PunctData<charT>::positive_sign_ [intl] = plus_plus [0];
+ PunctData<charT>::negative_sign_ [intl] = minus_minus [0];
+ PunctData<charT>::positive_sign_ [locl] = plus_plus [1];
+ PunctData<charT>::negative_sign_ [locl] = minus_minus [1];
TEST (T, 27.0, "+27+", 4, 0, eofbit, 0, 0, "");
TEST (T, 28.0, "+ 28+", 6, 0, eofbit, 0, 0, "");
@@ -683,10 +685,10 @@
static const charT plus_minus[][3] = { { '+', '-', '\0' }, { '\0' } };
- PunctData<charT>::positive_sign_ [0] = plus_plus [0];
- PunctData<charT>::positive_sign_ [1] = plus_plus [1];
- PunctData<charT>::negative_sign_ [0] = plus_minus [0];
- PunctData<charT>::negative_sign_ [1] = plus_minus [1];
+ PunctData<charT>::positive_sign_ [intl] = plus_plus [0];
+ PunctData<charT>::positive_sign_ [locl] = plus_plus [1];
+ PunctData<charT>::negative_sign_ [intl] = plus_minus [0];
+ PunctData<charT>::negative_sign_ [locl] = plus_minus [1];
// 22.2.6.1.2, p3: if the first character of positive
// and negative sign is the same, the result is positive
@@ -702,10 +704,10 @@
// none = 0, space = 1, symbol = 2, sign = 3, value = 4
// test various patterns
- PunctData<charT>::positive_sign_ [0] = plus [0];
- PunctData<charT>::positive_sign_ [1] = plus [1];
- PunctData<charT>::negative_sign_ [0] = minus [0];
- PunctData<charT>::negative_sign_ [1] = minus [1];
+ PunctData<charT>::positive_sign_ [intl] = plus [0];
+ PunctData<charT>::positive_sign_ [locl] = plus [1];
+ PunctData<charT>::negative_sign_ [intl] = minus [0];
+ PunctData<charT>::negative_sign_ [locl] = minus [1];
TEST (T, -100.0, "$-1", 3, showbase, eofbit, 2, "\2\3\4\0", "$");
TEST (T, -200.0, "$-2 ", 3, showbase, goodbit, 2, "\2\3\4\0", "$");
@@ -730,8 +732,8 @@
TEST (T, -1500.0, "15 $-", 5, showbase, eofbit, 2, "\4\1\2\3", "$");
const charT parens[][3] = { { '(', ')', '\0' }, { '\0' } };
- PunctData<charT>::negative_sign_ [0] = parens [0];
- PunctData<charT>::negative_sign_ [1] = parens [1];
+ PunctData<charT>::negative_sign_ [intl] = parens [0];
+ PunctData<charT>::negative_sign_ [locl] = parens [1];
// { sign, space, value, symbol }, with symbol required
TEST (T, -90.0, "( 9$)", 5, showbase, eofbit, 1, "\3\1\4\2", "$");
@@ -756,10 +758,10 @@
TEST (T, -104.0, "(104 L)", 7, 0, eofbit, 0, "\3\4\0\2", "L");
TEST (T, -105.0, "(105 L)", 7, showbase, eofbit, 0, "\3\4\0\2", "L");
- PunctData<charT>::positive_sign_ [0] = plus [0];
- PunctData<charT>::negative_sign_ [0] = minus [0];
- PunctData<charT>::positive_sign_ [1] = plus [1];
- PunctData<charT>::negative_sign_ [1] = minus [1];
+ PunctData<charT>::positive_sign_ [intl] = plus [0];
+ PunctData<charT>::negative_sign_ [intl] = minus [0];
+ PunctData<charT>::positive_sign_ [locl] = plus [1];
+ PunctData<charT>::negative_sign_ [locl] = minus [1];
// { sign, value, none, symbol }
// trailing optional curr_symbol or whitespace preceding it (regardless
@@ -784,8 +786,8 @@
TEST (T, -109.0, "109-$", 5, showbase, eofbit, 0, "\4\0\3\2", "$");
const charT minus_space[][3] = { { '-', ' ', '\0' }, { '\0' } };
- PunctData<charT>::negative_sign_ [0] = minus_space [0];
- PunctData<charT>::negative_sign_ [1] = minus_space [1];
+ PunctData<charT>::negative_sign_ [intl] = minus_space [0];
+ PunctData<charT>::negative_sign_ [locl] = minus_space [1];
// { sign, value, none, symbol }
// negative_sign is "- ", (note the single trailing space)
@@ -797,30 +799,30 @@
// verify that optional space after value and before currency
// symbol is treated correctly
- PunctData<charT>::positive_sign_ [0] = plus_plus [0];
- PunctData<charT>::positive_sign_ [1] = 0;
- PunctData<charT>::negative_sign_ [0] = 0;
- PunctData<charT>::negative_sign_ [1] = 0;
+ PunctData<charT>::positive_sign_ [intl] = plus_plus [0];
+ PunctData<charT>::positive_sign_ [locl] = 0;
+ PunctData<charT>::negative_sign_ [intl] = 0;
+ PunctData<charT>::negative_sign_ [locl] = 0;
// { sign, value, none, symbol }
TEST (T, 1090.0, "1090 $", 6, showbase, eofbit, 0, "\3\4\0\2", "$");
TEST (T, 1091.0, "1091 $", 6, showbase, eofbit, 0, "\3\4\0\2", "$");
TEST (T, +1092.0, "+1092 $+", 8, showbase, eofbit, 0, "\3\4\0\2", "$");
- PunctData<charT>::positive_sign_ [0] = 0;
- PunctData<charT>::positive_sign_ [1] = 0;
- PunctData<charT>::negative_sign_ [0] = parens [0];
- PunctData<charT>::negative_sign_ [1] = 0;
+ PunctData<charT>::positive_sign_ [intl] = 0;
+ PunctData<charT>::positive_sign_ [locl] = 0;
+ PunctData<charT>::negative_sign_ [intl] = parens [0];
+ PunctData<charT>::negative_sign_ [locl] = 0;
TEST (T, 1093.0, "1093 $", 6, showbase, eofbit, 0, "\3\4\0\2", "$");
TEST (T, 1094.0, "1094 $", 6, showbase, eofbit, 0, "\3\4\0\2", "$");
TEST (T, -1095.0, "(1095 $)", 8, showbase, eofbit, 0, "\3\4\0\2", "$");
// verify a single-char sign with a multichar one (see bug #428)
- PunctData<charT>::positive_sign_ [0] = plus [0];
- PunctData<charT>::positive_sign_ [1] = 0;
- PunctData<charT>::negative_sign_ [0] = parens [0];
- PunctData<charT>::negative_sign_ [1] = 0;
+ PunctData<charT>::positive_sign_ [intl] = plus [0];
+ PunctData<charT>::positive_sign_ [locl] = 0;
+ PunctData<charT>::negative_sign_ [intl] = parens [0];
+ PunctData<charT>::negative_sign_ [locl] = 0;
// { sign, value, none, symbol }
TEST (T, 1096.0, "1096 $", 6, showbase, eofbit, 0, "\3\4\0\2", "$");
@@ -828,10 +830,10 @@
TEST (T, +1098.0, "+1098 $", 7, showbase, eofbit, 0, "\3\4\0\2", "$");
TEST (T, -1099.0, "(1099 $)", 8, showbase, eofbit, 0, "\3\4\0\2", "$");
- PunctData<charT>::positive_sign_ [0] = 0;
- PunctData<charT>::positive_sign_ [1] = 0;
- PunctData<charT>::negative_sign_ [0] = 0;
- PunctData<charT>::negative_sign_ [1] = 0;
+ PunctData<charT>::positive_sign_ [intl] = 0;
+ PunctData<charT>::positive_sign_ [locl] = 0;
+ PunctData<charT>::negative_sign_ [intl] = 0;
+ PunctData<charT>::negative_sign_ [locl] = 0;
// { value, none, symbol, sign }
// trailing whitespace is not extracted (even if required by the format)
@@ -851,12 +853,12 @@
TEST (T, 119.0, "119 $", 5, showbase, eofbit, 0, "\4\1\2\3", "$");
- PunctData<charT>::positive_sign_ [0] = plus [0];
- PunctData<charT>::positive_sign_ [1] = plus [1];
- PunctData<charT>::negative_sign_ [0] = minus [0];
- PunctData<charT>::negative_sign_ [1] = minus [1];
- PunctData<charT>::thousands_sep_ [0] = ';';
- PunctData<charT>::thousands_sep_ [1] = '*';
+ PunctData<charT>::positive_sign_ [intl] = plus [0];
+ PunctData<charT>::positive_sign_ [locl] = plus [1];
+ PunctData<charT>::negative_sign_ [intl] = minus [0];
+ PunctData<charT>::negative_sign_ [locl] = minus [1];
+ PunctData<charT>::thousands_sep_ [intl] = ';';
+ PunctData<charT>::thousands_sep_ [locl] = '*';
// test grouping, default pattern { symbol sign none value }
TEST (T, 0.0, "$0", 2, 0, eofbit, 0, 0, "$", "\1");
@@ -943,6 +945,19 @@
#undef T
+}
+
+/**************************************************************************/
+
+template <class charT>
+void
+test_get (charT opt, const char *cname, const char *tname)
+{
+ // test local money format
+ test_get (opt, cname, tname, false);
+
+ // test international money format
+ test_get (opt, cname, tname, true);
}
/**************************************************************************/