put_long_double_fr_FR.pass.cpp [plain text]
#include <locale>
#include <ios>
#include <streambuf>
#include <cassert>
#include "iterators.h"
#include "../../../../../platform_support.h" // locale name macros
typedef std::money_put<char, output_iterator<char*> > Fn;
class my_facet
: public Fn
{
public:
explicit my_facet(std::size_t refs = 0)
: Fn(refs) {}
};
typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
class my_facetw
: public Fw
{
public:
explicit my_facetw(std::size_t refs = 0)
: Fw(refs) {}
};
int main()
{
std::ios ios(0);
std::string loc_name(LOCALE_fr_FR_UTF_8);
ios.imbue(std::locale(ios.getloc(),
new std::moneypunct_byname<char, false>(loc_name)));
ios.imbue(std::locale(ios.getloc(),
new std::moneypunct_byname<char, true>(loc_name)));
ios.imbue(std::locale(ios.getloc(),
new std::moneypunct_byname<wchar_t, false>(loc_name)));
ios.imbue(std::locale(ios.getloc(),
new std::moneypunct_byname<wchar_t, true>(loc_name)));
{
const my_facet f(1);
{ long double v = 0;
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 ");
}
{ long double v = -1;
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 -");
}
{ long double v = 123456789;
char str[100];
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 ");
}
{ long double v = -123456789;
char str[100];
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 -");
}
{ long double v = 0;
showbase(ios);
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 Eu");
}
{ long double v = -1;
showbase(ios);
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
false, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 Eu-");
}
{ long double v = 123456789;
showbase(ios);
char str[100];
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");
}
{ long double v = -123456789;
showbase(ios);
char str[100];
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-");
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
left(ios);
char str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
internal(ios);
char str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
right(ios);
char str[100];
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(ios.width() == 0);
}
noshowbase(ios);
ios.unsetf(std::ios_base::adjustfield);
{ long double v = 0;
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 ");
}
{ long double v = -1;
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 -");
}
{ long double v = 123456789;
char str[100];
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 ");
}
{ long double v = -123456789;
char str[100];
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 -");
}
{ long double v = 0;
showbase(ios);
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,00 EUR ");
}
{ long double v = -1;
showbase(ios);
char str[100];
output_iterator<char*> iter = f.put(output_iterator<char*>(str),
true, ios, '*', v);
std::string ex(str, iter.base());
assert(ex == "0,01 EUR -");
}
{ long double v = 123456789;
showbase(ios);
char str[100];
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 ");
}
{ long double v = -123456789;
showbase(ios);
char str[100];
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 -");
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
left(ios);
char str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
internal(ios);
char str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
right(ios);
char str[100];
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(ios.width() == 0);
}
}
{
const my_facetw f(1);
noshowbase(ios);
ios.unsetf(std::ios_base::adjustfield);
{ long double v = 0;
wchar_t str[100];
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 ");
}
{ long double v = -1;
wchar_t str[100];
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 -");
}
{ long double v = 123456789;
wchar_t str[100];
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 ");
}
{ long double v = -123456789;
wchar_t str[100];
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 -");
}
{ long double v = 0;
showbase(ios);
wchar_t str[100];
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");
}
{ long double v = -1;
showbase(ios);
wchar_t str[100];
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-");
}
{ long double v = 123456789;
showbase(ios);
wchar_t str[100];
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");
}
{ long double v = -123456789;
showbase(ios);
wchar_t str[100];
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-");
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
left(ios);
wchar_t str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
internal(ios);
wchar_t str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
right(ios);
wchar_t str[100];
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(ios.width() == 0);
}
noshowbase(ios);
ios.unsetf(std::ios_base::adjustfield);
{ long double v = 0;
wchar_t str[100];
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 ");
}
{ long double v = -1;
wchar_t str[100];
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 -");
}
{ long double v = 123456789;
wchar_t str[100];
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 ");
}
{ long double v = -123456789;
wchar_t str[100];
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 -");
}
{ long double v = 0;
showbase(ios);
wchar_t str[100];
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 ");
}
{ long double v = -1;
showbase(ios);
wchar_t str[100];
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 -");
}
{ long double v = 123456789;
showbase(ios);
wchar_t str[100];
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 ");
}
{ long double v = -123456789;
showbase(ios);
wchar_t str[100];
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 -");
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
left(ios);
wchar_t str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
internal(ios);
wchar_t str[100];
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(ios.width() == 0);
}
{ long double v = -123456789;
showbase(ios);
ios.width(20);
right(ios);
wchar_t str[100];
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(ios.width() == 0);
}
}
}