OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gnu-dev/fsf-gcc-snapshot-1-mar-12/or1k-gcc/libstdc++-v3/testsuite/22_locale/money_put/put
    from Rev 742 to Rev 783
    Reverse comparison

Rev 742 → Rev 783

/wchar_t/1.cc
0,0 → 1,109
// { dg-require-namedlocale "de_DE@euro" }
 
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// test wstring version
void test01()
{
using namespace std;
typedef ostreambuf_iterator<wchar_t> iterator_type;
 
bool test __attribute__((unused)) = true;
 
// basic construction
locale loc_c = locale::classic();
locale loc_de = locale("de_DE@euro");
VERIFY( loc_c != loc_de );
 
// sanity check the data is correct.
const wstring empty;
 
// total EPA budget FY 2002
const wstring digits1(L"720000000000");
 
// input less than frac_digits
const wstring digits2(L"-1");
// cache the money_put facet
wostringstream oss;
oss.imbue(loc_de);
const money_put<wchar_t>& mon_put =
use_facet<money_put<wchar_t> >(oss.getloc());
 
mon_put.put(oss.rdbuf(), true, oss, L' ', digits1);
wstring result1 = oss.str();
VERIFY( result1 == L"7.200.000.000,00 " );
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, L' ', digits1);
wstring result2 = oss.str();
VERIFY( result2 == L"7.200.000.000,00 " );
 
// intl and non-intl versions should be the same.
VERIFY( result1 == result2 );
 
// now try with showbase, to get currency symbol in format
oss.setf(ios_base::showbase);
 
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, L' ', digits1);
wstring result3 = oss.str();
VERIFY( result3 == L"7.200.000.000,00 EUR " );
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, L' ', digits1);
wstring result4 = oss.str();
VERIFY( result4 == L"7.200.000.000,00 \x20ac" );
 
// intl and non-intl versions should be different.
VERIFY( result3 != result4 );
VERIFY( result3 != result1 );
VERIFY( result4 != result2 );
 
oss.unsetf(ios_base::showbase);
 
// test io.width() > length
// test various fill strategies
oss.str(empty);
oss.width(20);
mon_put.put(oss.rdbuf(), true, oss, L'*', digits2);
wstring result10 = oss.str();
VERIFY( result10 == L"***************-,01*" );
 
oss.str(empty);
oss.width(20);
oss.setf(ios_base::internal);
mon_put.put(oss.rdbuf(), true, oss, L'*', digits2);
wstring result11 = oss.str();
VERIFY( result11 == L"-,01****************" );
}
 
int main()
{
test01();
return 0;
}
/wchar_t/2.cc
0,0 → 1,108
// { dg-require-namedlocale "en_HK" }
 
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// test wstring version
void test02()
{
using namespace std;
typedef ostreambuf_iterator<wchar_t> iterator_type;
 
bool test __attribute__((unused)) = true;
 
// basic construction
locale loc_c = locale::classic();
locale loc_hk = locale("en_HK");
VERIFY( loc_c != loc_hk );
 
// sanity check the data is correct.
const wstring empty;
 
// total EPA budget FY 2002
const wstring digits1(L"720000000000");
 
// est. cost, national missile "defense", expressed as a loss in USD 2001
const wstring digits2(L"-10000000000000");
 
// not valid input
const wstring digits3(L"-A");
 
// input less than frac_digits
const wstring digits4(L"-1");
// cache the money_put facet
wostringstream oss;
oss.imbue(loc_hk);
const money_put<wchar_t>& mon_put =
use_facet<money_put<wchar_t> >(oss.getloc());
 
// now try with showbase, to get currency symbol in format
oss.setf(ios_base::showbase);
 
// test sign of more than one digit, say hong kong.
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, L' ', digits1);
wstring result5 = oss.str();
VERIFY( result5 == L"HK$7,200,000,000.00" );
 
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, L' ', digits2);
wstring result6 = oss.str();
VERIFY( result6 == L"(HKD 100,000,000,000.00)" );
 
// test one-digit formats without zero padding
oss.imbue(loc_c);
oss.str(empty);
const money_put<wchar_t>& mon_put2 =
use_facet<money_put<wchar_t> >(oss.getloc());
mon_put2.put(oss.rdbuf(), true, oss, L' ', digits4);
wstring result7 = oss.str();
VERIFY( result7 == L"1" );
 
// test one-digit formats with zero padding, zero frac widths
oss.imbue(loc_hk);
oss.str(empty);
const money_put<wchar_t>& mon_put3 =
use_facet<money_put<wchar_t> >(oss.getloc());
mon_put3.put(oss.rdbuf(), true, oss, L' ', digits4);
wstring result8 = oss.str();
VERIFY( result8 == L"(HKD .01)" );
 
oss.unsetf(ios_base::showbase);
 
// test bunk input
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, L' ', digits3);
wstring result9 = oss.str();
VERIFY( result9 == L"" );
}
 
int main()
{
test02();
return 0;
}
/wchar_t/wrapped_locale.cc
0,0 → 1,64
// { dg-require-namedlocale "ja_JP.eucjp" }
// { dg-require-namedlocale "de_DE@euro" }
// { dg-require-namedlocale "en_HK" }
 
// 2001-08-15 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.4.1.1 collate members
 
#include <testsuite_hooks.h>
 
#define main discard_main_1
#include "1.cc"
#undef main
 
#define main discard_main_2
#include "2.cc"
#undef main
 
#define main discard_main_3
#include "3.cc"
#undef main
 
#define main discard_main_4
#include "4.cc"
#undef main
 
#define main discard_main_5
#include "5.cc"
#undef main
 
#define main discard_main_6
#include "6.cc"
#undef main
 
int main()
{
using namespace __gnu_test;
func_callback two;
two.push_back(&test01);
two.push_back(&test02);
two.push_back(&test03);
two.push_back(&test04);
two.push_back(&test05);
two.push_back(&test06);
run_tests_wrapped_locale("ja_JP.eucjp", two);
return 0;
}
/wchar_t/3.cc
0,0 → 1,89
// { dg-require-namedlocale "de_DE@euro" }
 
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// test double version
void test03()
{
using namespace std;
typedef ostreambuf_iterator<wchar_t> iterator_type;
 
bool test __attribute__((unused)) = true;
 
// basic construction
locale loc_c = locale::classic();
locale loc_de = locale("de_DE@euro");
VERIFY( loc_c != loc_de );
 
// sanity check the data is correct.
const wstring empty;
 
// total EPA budget FY 2002
const long double digits1 = 720000000000.0;
// cache the money_put facet
wostringstream oss;
oss.imbue(loc_de);
const money_put<wchar_t>& mon_put =
use_facet<money_put<wchar_t> >(oss.getloc());
 
mon_put.put(oss.rdbuf(), true, oss, L' ', digits1);
wstring result1 = oss.str();
VERIFY( result1 == L"7.200.000.000,00 " );
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, L' ', digits1);
wstring result2 = oss.str();
VERIFY( result2 == L"7.200.000.000,00 " );
 
// intl and non-intl versions should be the same.
VERIFY( result1 == result2 );
 
// now try with showbase, to get currency symbol in format
oss.setf(ios_base::showbase);
 
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, L' ', digits1);
wstring result3 = oss.str();
VERIFY( result3 == L"7.200.000.000,00 EUR " );
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, L' ', digits1);
wstring result4 = oss.str();
VERIFY( result4 == L"7.200.000.000,00 \x20ac" );
 
// intl and non-intl versions should be different.
VERIFY( result3 != result4 );
VERIFY( result3 != result1 );
VERIFY( result4 != result2 );
}
 
int main()
{
test03();
return 0;
}
/wchar_t/4.cc
0,0 → 1,71
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
void test04()
{
using namespace std;
bool test __attribute__((unused)) = true;
 
// Check money_put works with other iterators besides streambuf
// output iterators. (As long as output_iterator requirements are met.)
typedef wstring::iterator iter_type;
typedef money_put<wchar_t, iter_type> mon_put_type;
const ios_base::iostate goodbit = ios_base::goodbit;
ios_base::iostate err = goodbit;
const locale loc_c = locale::classic();
// woman, art, thief (stole the blues)
const wstring str(L"1943 Janis Joplin");
const long double ld = 1943.0;
const wstring x(str.size(), 'x'); // have to have allocated wstring!
wstring res;
 
ostringstream oss;
oss.imbue(locale(loc_c, new mon_put_type));
 
// Iterator advanced, state, output.
const mon_put_type& mp = use_facet<mon_put_type>(oss.getloc());
 
// 01 wstring
res = x;
iter_type ret1 = mp.put(res.begin(), false, oss, L' ', str);
wstring sanity1(res.begin(), ret1);
VERIFY( err == goodbit );
VERIFY( res == L"1943xxxxxxxxxxxxx" );
VERIFY( sanity1 == L"1943" );
 
// 02 long double
res = x;
iter_type ret2 = mp.put(res.begin(), false, oss, L' ', ld);
wstring sanity2(res.begin(), ret2);
VERIFY( err == goodbit );
VERIFY( res == L"1943xxxxxxxxxxxxx" );
VERIFY( sanity2 == L"1943" );
}
 
int main()
{
test04();
return 0;
}
/wchar_t/12971.cc
0,0 → 1,50
// 2003-11-09 Paolo Carlini <pcarlini@suse.de>
 
// Copyright (C) 2003, 2004, 2009, 2010 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// libstdc++/12971
void test01()
{
using namespace std;
bool test __attribute__((unused)) = true;
 
typedef ostreambuf_iterator<wchar_t> iterator_type;
 
long double amount = 10.8L;
// cache the money_put facet
wostringstream oss;
const money_put<wchar_t>& mon_put =
use_facet<money_put<wchar_t> >(oss.getloc());
 
mon_put.put(oss.rdbuf(), true, oss, L' ', amount);
wstring result = oss.str();
VERIFY( result == L"11" );
}
 
int main()
{
test01();
return 0;
}
/wchar_t/5.cc
0,0 → 1,69
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
struct My_money_io : public std::moneypunct<wchar_t,false>
{
char_type do_decimal_point() const { return L'.'; }
char_type do_thousands_sep() const { return L','; }
std::string do_grouping() const { return "\003"; }
std::wstring do_negative_sign() const { return L"()"; }
int do_frac_digits() const { return 2; }
 
pattern do_neg_format() const
{
pattern pat = { { symbol, space, sign, value } };
return pat;
}
};
 
// libstdc++/5708
void test05()
{
using namespace std;
bool test __attribute__((unused)) = true;
typedef ostreambuf_iterator<wchar_t> OutIt;
 
locale loc(locale::classic(), new My_money_io);
 
bool intl = false;
 
wstring val(L"-123456");
const money_put<wchar_t, OutIt>& mp =
use_facet<money_put<wchar_t, OutIt> >(loc);
 
wostringstream fmt;
fmt.imbue(loc);
OutIt out(fmt);
mp.put(out, intl, fmt, L'*', val);
VERIFY( fmt.str() == L"*(1,234.56)" );
}
 
int main()
{
test05();
return 0;
}
/wchar_t/6.cc
0,0 → 1,58
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
struct My_money_io_2 : public std::moneypunct<wchar_t,false>
{
char_type do_thousands_sep() const { return L','; }
std::string do_grouping() const { return "\001"; }
};
 
// Make sure we can output a very big amount of money (with grouping too).
void test06()
{
using namespace std;
bool test __attribute__((unused)) = true;
typedef ostreambuf_iterator<wchar_t> OutIt;
 
locale loc(locale::classic(), new My_money_io_2);
 
bool intl = false;
 
long double val = 1.0e50L;
const money_put<wchar_t, OutIt>& mp =
use_facet<money_put<wchar_t, OutIt> >(loc);
 
wostringstream fmt;
fmt.imbue(loc);
OutIt out(fmt);
mp.put(out, intl, fmt, L'*', val);
VERIFY( fmt.good() );
}
 
int main()
{
test06();
return 0;
}
/wchar_t/39168.cc
0,0 → 1,50
// Copyright (C) 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <sstream>
#include <locale>
#include <climits>
#include <testsuite_hooks.h>
 
class my_moneypunct: public std::moneypunct<wchar_t>
{
protected:
std::string do_grouping() const { return std::string(1, CHAR_MAX); }
};
 
// libstdc++/39168
void test01()
{
bool test __attribute__((unused)) = true;
using namespace std;
 
wostringstream oss;
oss.imbue(locale(oss.getloc(), new my_moneypunct));
const money_put<wchar_t>& mp = use_facet<money_put<wchar_t> >(oss.getloc());
 
wstring digits(300, L'1');
mp.put(oss.rdbuf(), false, oss, ' ', digits);
VERIFY( oss.str() == digits );
}
 
int main()
{
test01();
return 0;
}
/wchar_t/wrapped_env.cc
0,0 → 1,64
// { dg-require-namedlocale "de_DE" }
// { dg-require-namedlocale "de_DE@euro" }
// { dg-require-namedlocale "en_HK" }
 
// 2001-08-15 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.4.1.1 collate members
 
#include <testsuite_hooks.h>
 
#define main discard_main_1
#include "1.cc"
#undef main
 
#define main discard_main_2
#include "2.cc"
#undef main
 
#define main discard_main_3
#include "3.cc"
#undef main
 
#define main discard_main_4
#include "4.cc"
#undef main
 
#define main discard_main_5
#include "5.cc"
#undef main
 
#define main discard_main_6
#include "6.cc"
#undef main
 
int main()
{
using namespace __gnu_test;
func_callback two;
two.push_back(&test01);
two.push_back(&test02);
two.push_back(&test03);
two.push_back(&test04);
two.push_back(&test05);
two.push_back(&test06);
run_tests_wrapped_env("de_DE", "LANG", two);
return 0;
}
/char/1.cc
0,0 → 1,108
// { dg-require-namedlocale "de_DE@euro" }
 
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// test string version
void test01()
{
using namespace std;
typedef ostreambuf_iterator<char> iterator_type;
 
bool test __attribute__((unused)) = true;
 
// basic construction
locale loc_c = locale::classic();
locale loc_de = locale("de_DE@euro");
VERIFY( loc_c != loc_de );
 
// sanity check the data is correct.
const string empty;
 
// total EPA budget FY 2002
const string digits1("720000000000");
 
// input less than frac_digits
const string digits2("-1");
// cache the money_put facet
ostringstream oss;
oss.imbue(loc_de);
const money_put<char>& mon_put = use_facet<money_put<char> >(oss.getloc());
 
mon_put.put(oss.rdbuf(), true, oss, ' ', digits1);
string result1 = oss.str();
VERIFY( result1 == "7.200.000.000,00 ");
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, ' ', digits1);
string result2 = oss.str();
VERIFY( result2 == "7.200.000.000,00 ");
 
// intl and non-intl versions should be the same.
VERIFY( result1 == result2 );
 
// now try with showbase, to get currency symbol in format
oss.setf(ios_base::showbase);
 
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, ' ', digits1);
string result3 = oss.str();
VERIFY( result3 == "7.200.000.000,00 EUR ");
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, ' ', digits1);
string result4 = oss.str();
VERIFY( result4 == "7.200.000.000,00 \244");
 
// intl and non-intl versions should be different.
VERIFY( result3 != result4 );
VERIFY( result3 != result1 );
VERIFY( result4 != result2 );
 
oss.unsetf(ios_base::showbase);
 
// test io.width() > length
// test various fill strategies
oss.str(empty);
oss.width(20);
mon_put.put(oss.rdbuf(), true, oss, '*', digits2);
string result10 = oss.str();
VERIFY( result10 == "***************-,01*");
 
oss.str(empty);
oss.width(20);
oss.setf(ios_base::internal);
mon_put.put(oss.rdbuf(), true, oss, '*', digits2);
string result11 = oss.str();
VERIFY( result11 == "-,01****************");
}
 
int main()
{
test01();
return 0;
}
/char/2.cc
0,0 → 1,105
// { dg-require-namedlocale "en_HK" }
 
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// test string version
void test02()
{
using namespace std;
typedef ostreambuf_iterator<char> iterator_type;
 
bool test __attribute__((unused)) = true;
 
// basic construction
locale loc_c = locale::classic();
locale loc_hk = locale("en_HK");
VERIFY( loc_c != loc_hk );
 
// sanity check the data is correct.
const string empty;
 
// total EPA budget FY 2002
const string digits1("720000000000");
 
// est. cost, national missile "defense", expressed as a loss in USD 2001
const string digits2("-10000000000000");
 
// not valid input
const string digits3("-A");
 
// input less than frac_digits
const string digits4("-1");
// cache the money_put facet
ostringstream oss;
oss.imbue(loc_hk);
const money_put<char>& mon_put = use_facet<money_put<char> >(oss.getloc());
 
// now try with showbase, to get currency symbol in format
oss.setf(ios_base::showbase);
 
// test sign of more than one digit, say hong kong.
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, ' ', digits1);
string result5 = oss.str();
VERIFY( result5 == "HK$7,200,000,000.00");
 
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, ' ', digits2);
string result6 = oss.str();
VERIFY( result6 == "(HKD 100,000,000,000.00)");
 
// test one-digit formats without zero padding
oss.imbue(loc_c);
oss.str(empty);
const money_put<char>& mon_put2 = use_facet<money_put<char> >(oss.getloc());
mon_put2.put(oss.rdbuf(), true, oss, ' ', digits4);
string result7 = oss.str();
VERIFY( result7 == "1");
 
// test one-digit formats with zero padding, zero frac widths
oss.imbue(loc_hk);
oss.str(empty);
const money_put<char>& mon_put3 = use_facet<money_put<char> >(oss.getloc());
mon_put3.put(oss.rdbuf(), true, oss, ' ', digits4);
string result8 = oss.str();
VERIFY( result8 == "(HKD .01)");
 
oss.unsetf(ios_base::showbase);
 
// test bunk input
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, ' ', digits3);
string result9 = oss.str();
VERIFY( result9 == "");
}
 
int main()
{
test02();
return 0;
}
/char/wrapped_locale.cc
0,0 → 1,64
// { dg-require-namedlocale "ja_JP.eucjp" }
// { dg-require-namedlocale "de_DE@euro" }
// { dg-require-namedlocale "en_HK" }
 
// 2001-08-15 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.4.1.1 collate members
 
#include <testsuite_hooks.h>
 
#define main discard_main_1
#include "1.cc"
#undef main
 
#define main discard_main_2
#include "2.cc"
#undef main
 
#define main discard_main_3
#include "3.cc"
#undef main
 
#define main discard_main_4
#include "4.cc"
#undef main
 
#define main discard_main_5
#include "5.cc"
#undef main
 
#define main discard_main_6
#include "6.cc"
#undef main
 
int main()
{
using namespace __gnu_test;
func_callback two;
two.push_back(&test01);
two.push_back(&test02);
two.push_back(&test03);
two.push_back(&test04);
two.push_back(&test05);
two.push_back(&test06);
run_tests_wrapped_locale("ja_JP.eucjp", two);
return 0;
}
/char/3.cc
0,0 → 1,88
// { dg-require-namedlocale "de_DE@euro" }
 
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// test double version
void test03()
{
using namespace std;
typedef ostreambuf_iterator<char> iterator_type;
 
bool test __attribute__((unused)) = true;
 
// basic construction
locale loc_c = locale::classic();
locale loc_de = locale("de_DE@euro");
VERIFY( loc_c != loc_de );
 
// sanity check the data is correct.
const string empty;
 
// total EPA budget FY 2002
const long double digits1 = 720000000000.0;
// cache the money_put facet
ostringstream oss;
oss.imbue(loc_de);
const money_put<char>& mon_put = use_facet<money_put<char> >(oss.getloc());
 
mon_put.put(oss.rdbuf(), true, oss, ' ', digits1);
string result1 = oss.str();
VERIFY( result1 == "7.200.000.000,00 ");
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, ' ', digits1);
string result2 = oss.str();
VERIFY( result2 == "7.200.000.000,00 ");
 
// intl and non-intl versions should be the same.
VERIFY( result1 == result2 );
 
// now try with showbase, to get currency symbol in format
oss.setf(ios_base::showbase);
 
oss.str(empty);
mon_put.put(oss.rdbuf(), true, oss, ' ', digits1);
string result3 = oss.str();
VERIFY( result3 == "7.200.000.000,00 EUR ");
 
oss.str(empty);
mon_put.put(oss.rdbuf(), false, oss, ' ', digits1);
string result4 = oss.str();
VERIFY( result4 == "7.200.000.000,00 \244");
 
// intl and non-intl versions should be different.
VERIFY( result3 != result4 );
VERIFY( result3 != result1 );
VERIFY( result4 != result2 );
}
 
int main()
{
test03();
return 0;
}
/char/12971.cc
0,0 → 1,49
// 2003-11-09 Paolo Carlini <pcarlini@suse.de>
 
// Copyright (C) 2003, 2009, 2010 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
// libstdc++/12971
void test01()
{
using namespace std;
bool test __attribute__((unused)) = true;
 
typedef ostreambuf_iterator<char> iterator_type;
 
long double amount = 10.8L;
// cache the money_put facet
ostringstream oss;
const money_put<char>& mon_put = use_facet<money_put<char> >(oss.getloc());
 
mon_put.put(oss.rdbuf(), true, oss, ' ', amount);
string result = oss.str();
VERIFY( result == "11" );
}
 
int main()
{
test01();
return 0;
}
/char/4.cc
0,0 → 1,71
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
void test04()
{
using namespace std;
bool test __attribute__((unused)) = true;
 
// Check money_put works with other iterators besides streambuf
// output iterators. (As long as output_iterator requirements are met.)
typedef string::iterator iter_type;
typedef money_put<char, iter_type> mon_put_type;
const ios_base::iostate goodbit = ios_base::goodbit;
ios_base::iostate err = goodbit;
const locale loc_c = locale::classic();
// woman, art, thief (stole the blues)
const string str("1943 Janis Joplin");
const long double ld = 1943.0;
const string x(str.size(), 'x'); // have to have allocated string!
string res;
 
ostringstream oss;
oss.imbue(locale(loc_c, new mon_put_type));
 
// Iterator advanced, state, output.
const mon_put_type& mp = use_facet<mon_put_type>(oss.getloc());
 
// 01 string
res = x;
iter_type ret1 = mp.put(res.begin(), false, oss, ' ', str);
string sanity1(res.begin(), ret1);
VERIFY( err == goodbit );
VERIFY( res == "1943xxxxxxxxxxxxx" );
VERIFY( sanity1 == "1943" );
 
// 02 long double
res = x;
iter_type ret2 = mp.put(res.begin(), false, oss, ' ', ld);
string sanity2(res.begin(), ret2);
VERIFY( err == goodbit );
VERIFY( res == "1943xxxxxxxxxxxxx" );
VERIFY( sanity2 == "1943" );
}
 
int main()
{
test04();
return 0;
}
/char/5.cc
0,0 → 1,69
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
struct My_money_io : public std::moneypunct<char,false>
{
char_type do_decimal_point() const { return '.'; }
char_type do_thousands_sep() const { return ','; }
std::string do_grouping() const { return "\003"; }
std::string do_negative_sign() const { return "()"; }
int do_frac_digits() const { return 2; }
 
pattern do_neg_format() const
{
pattern pat = { { symbol, space, sign, value } };
return pat;
}
};
 
// libstdc++/5708
void test05()
{
using namespace std;
bool test __attribute__((unused)) = true;
typedef ostreambuf_iterator<char> OutIt;
 
locale loc(locale::classic(), new My_money_io);
 
bool intl = false;
 
string val("-123456");
const money_put<char,OutIt>& mp =
use_facet<money_put<char, OutIt> >(loc);
 
ostringstream fmt;
fmt.imbue(loc);
OutIt out(fmt);
mp.put(out,intl,fmt,'*',val);
VERIFY( fmt.str() == "*(1,234.56)" );
}
 
int main()
{
test05();
return 0;
}
/char/6.cc
0,0 → 1,58
// 2001-08-27 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
 
struct My_money_io_2 : public std::moneypunct<char,false>
{
char_type do_thousands_sep() const { return ','; }
std::string do_grouping() const { return "\001"; }
};
 
// Make sure we can output a very big amount of money (with grouping too).
void test06()
{
using namespace std;
bool test __attribute__((unused)) = true;
typedef ostreambuf_iterator<char> OutIt;
 
locale loc(locale::classic(), new My_money_io_2);
 
bool intl = false;
 
long double val = 1.0e50L;
const money_put<char,OutIt>& mp =
use_facet<money_put<char, OutIt> >(loc);
 
ostringstream fmt;
fmt.imbue(loc);
OutIt out(fmt);
mp.put(out,intl,fmt,'*',val);
VERIFY( fmt.good() );
}
 
int main()
{
test06();
return 0;
}
/char/9780-3.cc
0,0 → 1,50
// { dg-require-namedlocale "de_DE" }
// { dg-require-namedlocale "es_ES" }
 
// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
#include <sstream>
#include <locale>
#include <testsuite_hooks.h>
 
int main()
{
using namespace std;
 
bool test __attribute__((unused)) = true;
locale l1 = locale("de_DE");
locale l2 = locale("es_ES");
const money_put<char>& mp = use_facet<money_put<char> >(l1);
ostringstream oss;
oss.imbue(l2);
oss.setf(ios_base::showbase);
 
long double ld = -1234567890;
mp.put(oss.rdbuf(), true, oss, ' ', ld); // -EUR 12.345.678,90
string res = oss.str();
 
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 7)
VERIFY( res == "-12.345.678,90 EUR " );
#else
VERIFY( res == "-EUR 12.345.678,90" );
#endif
 
return 0;
}
/char/39168.cc
0,0 → 1,50
// Copyright (C) 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.6.2.1 money_put members
 
#include <sstream>
#include <locale>
#include <climits>
#include <testsuite_hooks.h>
 
class my_moneypunct: public std::moneypunct<char>
{
protected:
std::string do_grouping() const { return std::string(1, CHAR_MAX); }
};
 
// libstdc++/39168
void test01()
{
bool test __attribute__((unused)) = true;
using namespace std;
 
ostringstream oss;
oss.imbue(locale(oss.getloc(), new my_moneypunct));
const money_put<char>& mp = use_facet<money_put<char> >(oss.getloc());
 
string digits(300, '1');
mp.put(oss.rdbuf(), false, oss, ' ', digits);
VERIFY( oss.str() == digits );
}
 
int main()
{
test01();
return 0;
}
/char/wrapped_env.cc
0,0 → 1,64
// { dg-require-namedlocale "de_DE" }
// { dg-require-namedlocale "de_DE@euro" }
// { dg-require-namedlocale "en_HK" }
 
// 2001-08-15 Benjamin Kosnik <bkoz@redhat.com>
 
// Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
 
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
 
// 22.2.4.1.1 collate members
 
#include <testsuite_hooks.h>
 
#define main discard_main_1
#include "1.cc"
#undef main
 
#define main discard_main_2
#include "2.cc"
#undef main
 
#define main discard_main_3
#include "3.cc"
#undef main
 
#define main discard_main_4
#include "4.cc"
#undef main
 
#define main discard_main_5
#include "5.cc"
#undef main
 
#define main discard_main_6
#include "6.cc"
#undef main
 
int main()
{
using namespace __gnu_test;
func_callback two;
two.push_back(&test01);
two.push_back(&test02);
two.push_back(&test03);
two.push_back(&test04);
two.push_back(&test05);
two.push_back(&test06);
run_tests_wrapped_env("de_DE", "LANG", two);
return 0;
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.