Fix moneypunct_byname algorithm to more accurately represent C locales in C++.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@152501 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jeffrey Yasskin
2012-03-10 18:31:43 +00:00
parent 05b57d5cdf
commit 558ae17391
8 changed files with 412 additions and 222 deletions

View File

@@ -69,7 +69,7 @@ int main()
assert(ex == 0);
}
{ // negative one
std::string v = "0,01 -";
std::string v = "-0,01";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -91,7 +91,7 @@ int main()
assert(ex == 123456789);
}
{ // negative
std::string v = "1 234 567,89 -";
std::string v = "-1 234 567,89";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -102,7 +102,7 @@ int main()
assert(ex == -123456789);
}
{ // negative
std::string v = "1234567,89 -";
std::string v = "-1234567,89";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -113,7 +113,8 @@ int main()
assert(ex == -123456789);
}
{ // zero, showbase
std::string v = "0,00 Eu";
std::string v = "0,00 \u20ac"; // €
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -124,7 +125,7 @@ int main()
assert(ex == 0);
}
{ // zero, showbase
std::string v = "0,00 Eu";
std::string v = "0,00 \u20ac"; // €
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -134,10 +135,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == 0);
noshowbase(ios);
}
{ // negative one, showbase
std::string v = "0,01 Eu-";
std::string v = "-0,01 \u20ac";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -148,7 +148,7 @@ int main()
assert(ex == -1);
}
{ // negative one, showbase
std::string v = "0,01 Eu-";
std::string v = "-0,01 \u20ac";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -158,10 +158,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == -1);
noshowbase(ios);
}
{ // positive, showbase
std::string v = "1 234 567,89 Eu";
std::string v = "1 234 567,89 \u20ac";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -172,7 +171,7 @@ int main()
assert(ex == 123456789);
}
{ // positive, showbase
std::string v = "1 234 567,89 Eu";
std::string v = "1 234 567,89 \u20ac";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -185,7 +184,7 @@ int main()
noshowbase(ios);
}
{ // negative, showbase
std::string v = "1 234 567,89 Eu-";
std::string v = "-1 234 567,89 \u20ac";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -205,7 +204,7 @@ int main()
std::ios_base::iostate err = std::ios_base::goodbit;
I iter = f.get(I(v.data()), I(v.data() + v.size()),
false, ios, err, ex);
assert(iter.base() == v.data() + 14);
assert(iter.base() == v.data() + 13);
assert(err == std::ios_base::failbit);
noshowbase(ios);
}
@@ -216,10 +215,11 @@ int main()
std::ios_base::iostate err = std::ios_base::goodbit;
I iter = f.get(I(v.data()), I(v.data() + v.size()),
false, ios, err, ex);
assert(iter.base() == v.data() + 14);
assert(iter.base() == v.data() + 13);
assert(err == std::ios_base::goodbit);
assert(ex == 123456789);
}
noshowbase(ios);
}
{
const my_facet f(1);
@@ -236,7 +236,7 @@ int main()
assert(ex == 0);
}
{ // negative one
std::string v = "0,01 -";
std::string v = "-0,01";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -258,7 +258,7 @@ int main()
assert(ex == 123456789);
}
{ // negative
std::string v = "1 234 567,89 -";
std::string v = "-1 234 567,89";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -269,7 +269,7 @@ int main()
assert(ex == -123456789);
}
{ // negative
std::string v = "1234567,89 -";
std::string v = "-1234567,89";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -280,7 +280,8 @@ int main()
assert(ex == -123456789);
}
{ // zero, showbase
std::string v = "0,00 EUR ";
std::string v = "0,00 EUR";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -291,7 +292,7 @@ int main()
assert(ex == 0);
}
{ // zero, showbase
std::string v = "0,00 EUR ";
std::string v = "0,00 EUR";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -301,10 +302,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == 0);
noshowbase(ios);
}
{ // negative one, showbase
std::string v = "0,01 EUR -";
std::string v = "-0,01 EUR";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -315,7 +315,7 @@ int main()
assert(ex == -1);
}
{ // negative one, showbase
std::string v = "0,01 EUR -";
std::string v = "-0,01 EUR";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -325,10 +325,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == -1);
noshowbase(ios);
}
{ // positive, showbase
std::string v = "1 234 567,89 EUR ";
std::string v = "1 234 567,89 EUR";
typedef input_iterator<const char*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -339,7 +338,7 @@ int main()
assert(ex == 123456789);
}
{ // positive, showbase
std::string v = "1 234 567,89 EUR ";
std::string v = "1 234 567,89 EUR";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -352,7 +351,7 @@ int main()
noshowbase(ios);
}
{ // negative, showbase
std::string v = "1 234 567,89 EUR -";
std::string v = "-1 234 567,89 EUR";
showbase(ios);
typedef input_iterator<const char*> I;
long double ex;
@@ -383,7 +382,7 @@ int main()
std::ios_base::iostate err = std::ios_base::goodbit;
I iter = f.get(I(v.data()), I(v.data() + v.size()),
true, ios, err, ex);
assert(iter.base() == v.data() + 14);
assert(iter.base() == v.data() + 13);
assert(err == std::ios_base::goodbit);
assert(ex == 123456789);
}
@@ -403,7 +402,7 @@ int main()
assert(ex == 0);
}
{ // negative one
std::wstring v = L"0,01 -";
std::wstring v = L"-0,01";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -425,7 +424,7 @@ int main()
assert(ex == 123456789);
}
{ // negative
std::wstring v = L"1 234 567,89 -";
std::wstring v = L"-1 234 567,89";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -436,7 +435,7 @@ int main()
assert(ex == -123456789);
}
{ // negative
std::wstring v = L"1234567,89 -";
std::wstring v = L"-1234567,89";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -447,7 +446,8 @@ int main()
assert(ex == -123456789);
}
{ // zero, showbase
std::wstring v = L"0,00 Eu";
std::wstring v = L"0,00 \u20ac";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -458,7 +458,7 @@ int main()
assert(ex == 0);
}
{ // zero, showbase
std::wstring v = L"0,00 Eu";
std::wstring v = L"0,00 \u20ac";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -468,10 +468,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == 0);
noshowbase(ios);
}
{ // negative one, showbase
std::wstring v = L"0,01 Eu-";
std::wstring v = L"-0,01 \u20ac";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -482,7 +481,7 @@ int main()
assert(ex == -1);
}
{ // negative one, showbase
std::wstring v = L"0,01 Eu-";
std::wstring v = L"-0,01 \u20ac";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -492,10 +491,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == -1);
noshowbase(ios);
}
{ // positive, showbase
std::wstring v = L"1 234 567,89 Eu";
std::wstring v = L"1 234 567,89 \u20ac";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -506,7 +504,7 @@ int main()
assert(ex == 123456789);
}
{ // positive, showbase
std::wstring v = L"1 234 567,89 Eu";
std::wstring v = L"1 234 567,89 \u20ac";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -519,7 +517,7 @@ int main()
noshowbase(ios);
}
{ // negative, showbase
std::wstring v = L"1 234 567,89 Eu-";
std::wstring v = L"-1 234 567,89 \u20ac";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -539,7 +537,7 @@ int main()
std::ios_base::iostate err = std::ios_base::goodbit;
I iter = f.get(I(v.data()), I(v.data() + v.size()),
false, ios, err, ex);
assert(iter.base() == v.data() + 14);
assert(iter.base() == v.data() + 13);
assert(err == std::ios_base::failbit);
noshowbase(ios);
}
@@ -550,7 +548,7 @@ int main()
std::ios_base::iostate err = std::ios_base::goodbit;
I iter = f.get(I(v.data()), I(v.data() + v.size()),
false, ios, err, ex);
assert(iter.base() == v.data() + 14);
assert(iter.base() == v.data() + 13);
assert(err == std::ios_base::goodbit);
assert(ex == 123456789);
}
@@ -570,7 +568,7 @@ int main()
assert(ex == 0);
}
{ // negative one
std::wstring v = L"0,01 -";
std::wstring v = L"-0,01";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -592,7 +590,7 @@ int main()
assert(ex == 123456789);
}
{ // negative
std::wstring v = L"1 234 567,89 -";
std::wstring v = L"-1 234 567,89";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -603,7 +601,7 @@ int main()
assert(ex == -123456789);
}
{ // negative
std::wstring v = L"1234567,89 -";
std::wstring v = L"-1234567,89";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -614,7 +612,8 @@ int main()
assert(ex == -123456789);
}
{ // zero, showbase
std::wstring v = L"0,00 EUR ";
std::wstring v = L"0,00 EUR";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -625,7 +624,7 @@ int main()
assert(ex == 0);
}
{ // zero, showbase
std::wstring v = L"0,00 EUR ";
std::wstring v = L"0,00 EUR";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -635,10 +634,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == 0);
noshowbase(ios);
}
{ // negative one, showbase
std::wstring v = L"0,01 EUR -";
std::wstring v = L"-0,01 EUR";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -649,7 +647,7 @@ int main()
assert(ex == -1);
}
{ // negative one, showbase
std::wstring v = L"0,01 EUR -";
std::wstring v = L"-0,01 EUR";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -659,10 +657,9 @@ int main()
assert(iter.base() == v.data() + v.size());
assert(err == std::ios_base::eofbit);
assert(ex == -1);
noshowbase(ios);
}
{ // positive, showbase
std::wstring v = L"1 234 567,89 EUR ";
std::wstring v = L"1 234 567,89 EUR";
typedef input_iterator<const wchar_t*> I;
long double ex;
std::ios_base::iostate err = std::ios_base::goodbit;
@@ -673,7 +670,7 @@ int main()
assert(ex == 123456789);
}
{ // positive, showbase
std::wstring v = L"1 234 567,89 EUR ";
std::wstring v = L"1 234 567,89 EUR";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -686,7 +683,7 @@ int main()
noshowbase(ios);
}
{ // negative, showbase
std::wstring v = L"1 234 567,89 EUR -";
std::wstring v = L"-1 234 567,89 EUR";
showbase(ios);
typedef input_iterator<const wchar_t*> I;
long double ex;
@@ -717,7 +714,7 @@ int main()
std::ios_base::iostate err = std::ios_base::goodbit;
I iter = f.get(I(v.data()), I(v.data() + v.size()),
true, ios, err, ex);
assert(iter.base() == v.data() + 14);
assert(iter.base() == v.data() + 13);
assert(err == std::ios_base::goodbit);
assert(ex == 123456789);
}

View File

@@ -63,7 +63,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 ");
assert(ex == "0,00");
}
{ // negative one
long double v = -1;
@@ -71,7 +71,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 -");
assert(ex == "-0,01");
}
{ // positive
long double v = 123456789;
@@ -79,7 +79,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 ");
assert(ex == "1 234 567,89");
}
{ // negative
long double v = -123456789;
@@ -87,7 +87,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 -");
assert(ex == "-1 234 567,89");
}
{ // zero, showbase
long double v = 0;
@@ -96,7 +96,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 Eu");
assert(ex == "0,00 \u20ac");
}
{ // negative one, showbase
long double v = -1;
@@ -105,7 +105,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 Eu-");
assert(ex == "-0,01 \u20ac");
}
{ // positive, showbase
long double v = 123456789;
@@ -114,7 +114,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 Eu");
assert(ex == "1 234 567,89 \u20ac");
}
{ // negative, showbase
long double v = -123456789;
@@ -123,7 +123,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 Eu-");
assert(ex == "-1 234 567,89 \u20ac");
}
{ // negative, showbase, left
long double v = -123456789;
@@ -134,7 +134,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, ' ', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 Eu- ");
assert(ex == "-1 234 567,89 \u20ac ");
assert(ios.width() == 0);
}
{ // negative, showbase, internal
@@ -146,7 +146,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, ' ', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 Eu-");
assert(ex == "-1 234 567,89 \u20ac");
assert(ios.width() == 0);
}
{ // negative, showbase, right
@@ -158,7 +158,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, ' ', v);
std::string ex(str, iter.base());
assert(ex == " 1 234 567,89 Eu-");
assert(ex == " -1 234 567,89 \u20ac");
assert(ios.width() == 0);
}
@@ -171,7 +171,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 ");
assert(ex == "0,00");
}
{ // negative one
long double v = -1;
@@ -179,7 +179,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 -");
assert(ex == "-0,01");
}
{ // positive
long double v = 123456789;
@@ -187,7 +187,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 ");
assert(ex == "1 234 567,89");
}
{ // negative
long double v = -123456789;
@@ -195,7 +195,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 -");
assert(ex == "-1 234 567,89");
}
{ // zero, showbase
long double v = 0;
@@ -204,7 +204,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 EUR ");
assert(ex == "0,00 EUR");
}
{ // negative one, showbase
long double v = -1;
@@ -213,7 +213,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 EUR -");
assert(ex == "-0,01 EUR");
}
{ // positive, showbase
long double v = 123456789;
@@ -222,7 +222,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 EUR ");
assert(ex == "1 234 567,89 EUR");
}
{ // negative, showbase
long double v = -123456789;
@@ -231,7 +231,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 EUR -");
assert(ex == "-1 234 567,89 EUR");
}
{ // negative, showbase, left
long double v = -123456789;
@@ -242,7 +242,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, ' ', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 EUR - ");
assert(ex == "-1 234 567,89 EUR ");
assert(ios.width() == 0);
}
{ // negative, showbase, internal
@@ -254,7 +254,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, ' ', v);
std::string ex(str, iter.base());
assert(ex == "1 234 567,89 EUR -");
assert(ex == "-1 234 567,89 EUR");
assert(ios.width() == 0);
}
{ // negative, showbase, right
@@ -266,7 +266,7 @@ int main()
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, ' ', v);
std::string ex(str, iter.base());
assert(ex == " 1 234 567,89 EUR -");
assert(ex == " -1 234 567,89 EUR");
assert(ios.width() == 0);
}
}
@@ -281,7 +281,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,00 ");
assert(ex == L"0,00");
}
{ // negative one
long double v = -1;
@@ -289,7 +289,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,01 -");
assert(ex == L"-0,01");
}
{ // positive
long double v = 123456789;
@@ -297,7 +297,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 ");
assert(ex == L"1 234 567,89");
}
{ // negative
long double v = -123456789;
@@ -305,7 +305,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 -");
assert(ex == L"-1 234 567,89");
}
{ // zero, showbase
long double v = 0;
@@ -314,7 +314,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,00 Eu");
assert(ex == L"0,00 \u20ac");
}
{ // negative one, showbase
long double v = -1;
@@ -323,7 +323,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,01 Eu-");
assert(ex == L"-0,01 \u20ac");
}
{ // positive, showbase
long double v = 123456789;
@@ -332,7 +332,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 Eu");
assert(ex == L"1 234 567,89 \u20ac");
}
{ // negative, showbase
long double v = -123456789;
@@ -341,7 +341,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 Eu-");
assert(ex == L"-1 234 567,89 \u20ac");
}
{ // negative, showbase, left
long double v = -123456789;
@@ -352,7 +352,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, ' ', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 Eu- ");
assert(ex == L"-1 234 567,89 \u20ac ");
assert(ios.width() == 0);
}
{ // negative, showbase, internal
@@ -364,7 +364,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, ' ', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 Eu-");
assert(ex == L"-1 234 567,89 \u20ac");
assert(ios.width() == 0);
}
{ // negative, showbase, right
@@ -376,7 +376,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
false, ios, ' ', v);
std::wstring ex(str, iter.base());
assert(ex == L" 1 234 567,89 Eu-");
assert(ex == L" -1 234 567,89 \u20ac");
assert(ios.width() == 0);
}
@@ -389,7 +389,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,00 ");
assert(ex == L"0,00");
}
{ // negative one
long double v = -1;
@@ -397,7 +397,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,01 -");
assert(ex == L"-0,01");
}
{ // positive
long double v = 123456789;
@@ -405,7 +405,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 ");
assert(ex == L"1 234 567,89");
}
{ // negative
long double v = -123456789;
@@ -413,7 +413,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 -");
assert(ex == L"-1 234 567,89");
}
{ // zero, showbase
long double v = 0;
@@ -422,7 +422,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,00 EUR ");
assert(ex == L"0,00 EUR");
}
{ // negative one, showbase
long double v = -1;
@@ -431,7 +431,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"0,01 EUR -");
assert(ex == L"-0,01 EUR");
}
{ // positive, showbase
long double v = 123456789;
@@ -440,7 +440,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 EUR ");
assert(ex == L"1 234 567,89 EUR");
}
{ // negative, showbase
long double v = -123456789;
@@ -449,7 +449,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, '*', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 EUR -");
assert(ex == L"-1 234 567,89 EUR");
}
{ // negative, showbase, left
long double v = -123456789;
@@ -460,7 +460,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, ' ', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 EUR - ");
assert(ex == L"-1 234 567,89 EUR ");
assert(ios.width() == 0);
}
{ // negative, showbase, internal
@@ -472,7 +472,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, ' ', v);
std::wstring ex(str, iter.base());
assert(ex == L"1 234 567,89 EUR -");
assert(ex == L"-1 234 567,89 EUR");
assert(ios.width() == 0);
}
{ // negative, showbase, right
@@ -484,7 +484,7 @@ int main()
output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
true, ios, ' ', v);
std::wstring ex(str, iter.base());
assert(ex == L" 1 234 567,89 EUR -");
assert(ex == L" -1 234 567,89 EUR");
assert(ios.width() == 0);
}
}

View File

@@ -89,36 +89,36 @@ int main()
{
Fnf f(LOCALE_fr_FR_UTF_8, 1);
assert(f.curr_symbol() == "Eu");
assert(f.curr_symbol() == " \u20ac");
}
{
Fnt f(LOCALE_fr_FR_UTF_8, 1);
assert(f.curr_symbol() == "EUR ");
assert(f.curr_symbol() == " EUR");
}
{
Fwf f(LOCALE_fr_FR_UTF_8, 1);
assert(f.curr_symbol() == L"Eu");
assert(f.curr_symbol() == L" \u20ac");
}
{
Fwt f(LOCALE_fr_FR_UTF_8, 1);
assert(f.curr_symbol() == L"EUR ");
assert(f.curr_symbol() == L" EUR");
}
{
Fnf f(LOCALE_ru_RU_UTF_8, 1);
assert(f.curr_symbol() == "\xD1\x80\xD1\x83\xD0\xB1"".");
assert(f.curr_symbol() == " \xD1\x80\xD1\x83\xD0\xB1");
}
{
Fnt f(LOCALE_ru_RU_UTF_8, 1);
assert(f.curr_symbol() == "RUB ");
assert(f.curr_symbol() == " RUB");
}
{
Fwf f(LOCALE_ru_RU_UTF_8, 1);
assert(f.curr_symbol() == L"\x440\x443\x431"".");
assert(f.curr_symbol() == L" \x440\x443\x431");
}
{
Fwt f(LOCALE_ru_RU_UTF_8, 1);
assert(f.curr_symbol() == L"RUB ");
assert(f.curr_symbol() == L" RUB");
}
{

View File

@@ -92,19 +92,19 @@ int main()
{
Fnf f(LOCALE_fr_FR_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
{
Fnt f(LOCALE_fr_FR_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
{
Fwf f(LOCALE_fr_FR_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
{
Fwt f(LOCALE_fr_FR_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
{
@@ -126,18 +126,18 @@ int main()
{
Fnf f(LOCALE_zh_CN_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
{
Fnt f(LOCALE_zh_CN_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
{
Fwf f(LOCALE_zh_CN_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
{
Fwt f(LOCALE_zh_CN_UTF_8, 1);
assert(f.grouping() == "\3\3");
assert(f.grouping() == "\3");
}
}

View File

@@ -122,34 +122,34 @@ int main()
{
Fnf f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::value);
assert(p.field[1] == std::money_base::space);
assert(p.field[2] == std::money_base::symbol);
assert(p.field[3] == std::money_base::sign);
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
Fnt f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::value);
assert(p.field[1] == std::money_base::space);
assert(p.field[2] == std::money_base::symbol);
assert(p.field[3] == std::money_base::sign);
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
Fwf f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::value);
assert(p.field[1] == std::money_base::space);
assert(p.field[2] == std::money_base::symbol);
assert(p.field[3] == std::money_base::sign);
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
Fwt f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::value);
assert(p.field[1] == std::money_base::space);
assert(p.field[2] == std::money_base::symbol);
assert(p.field[3] == std::money_base::sign);
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -157,7 +157,7 @@ int main()
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -165,7 +165,7 @@ int main()
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -173,7 +173,7 @@ int main()
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -181,7 +181,7 @@ int main()
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
@@ -196,8 +196,8 @@ int main()
{
Fnt f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
}
@@ -212,8 +212,8 @@ int main()
{
Fwt f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.neg_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
}

View File

@@ -124,7 +124,7 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -132,7 +132,7 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -140,7 +140,7 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -148,7 +148,7 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
@@ -157,7 +157,7 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -165,7 +165,7 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -173,7 +173,7 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
@@ -181,15 +181,15 @@ int main()
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::space);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}
{
Fnf f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
}
@@ -204,8 +204,8 @@ int main()
{
Fwf f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
}