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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libstdc++-v3/] [testsuite/] [22_locale/] [num_put/] [put/] [char/] [8.cc] - Blame information for rev 19

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 19 jlechner
// Copyright (C) 2003 Free Software Foundation
2
//
3
// This file is part of the GNU ISO C++ Library.  This library is free
4
// software; you can redistribute it and/or modify it under the
5
// terms of the GNU General Public License as published by the
6
// Free Software Foundation; either version 2, or (at your option)
7
// any later version.
8
 
9
// This library is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
 
14
// You should have received a copy of the GNU General Public License along
15
// with this library; see the file COPYING.  If not, write to the Free
16
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
17
// USA.
18
 
19
// 22.2.2.2.1  num_put members
20
 
21
#include <locale>
22
#include <sstream>
23
#include <testsuite_hooks.h>
24
 
25
struct Ctype: std::ctype<char>
26
{
27
  char
28
  do_widen(char c) const
29
  { return 'A' + c % 26; }
30
 
31
  const char*
32
  do_widen(const char* lo, const char* hi, char* to) const
33
  {
34
    for (; lo != hi; *to++ = Ctype::do_widen(*lo++));
35
    return hi;
36
  }
37
};
38
 
39
// See http://gcc.gnu.org/ml/libstdc++/2003-11/msg00154.html
40
void test01()
41
{
42
  using namespace std;
43
  bool test __attribute__((unused)) = true;
44
 
45
  ostringstream oss;
46
  oss.imbue(locale(locale::classic(), new Ctype));
47
  const num_put<char>& np = use_facet<num_put<char> >(oss.getloc());
48
 
49
  const string empty;
50
  string result;
51
  long inum = 123;
52
  double fnum = 123.456;
53
 
54
  np.put(oss.rdbuf(), oss, '+', inum);
55
  result = oss.str();
56
  VERIFY( result == "XYZ" );
57
 
58
  oss.clear();
59
  oss.str(empty);
60
  np.put(oss.rdbuf(), oss, '+', fnum);
61
  result = oss.str();
62
  VERIFY( result == "XYZ.ABC" );
63
}
64
 
65
int main()
66
{
67
  test01();
68
}

powered by: WebSVN 2.1.0

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