2002-11-21 Phil Edwards <pme@gcc.gnu.org>
[official-gcc.git] / libstdc++-v3 / testsuite / 27_io / ios_manip_fmtflags.cc
blob3173dc3a54cb9876159abbeb0bebbbf2d64d18d0
1 // 981027 ncm work with libstdc++v3
3 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
4 // Free Software Foundation, Inc.
5 //
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 2, or (at your option)
10 // any later version.
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING. If not, write to the Free
19 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
20 // USA.
22 // As a special exception, you may use this file as part of a free software
23 // library without restriction. Specifically, if other files instantiate
24 // templates or use macros or inline functions from this file, or you compile
25 // this file and link it with other files to produce an executable, this
26 // file does not by itself cause the resulting executable to be covered by
27 // the GNU General Public License. This exception does not however
28 // invalidate any other reasons why the executable file might be covered by
29 // the GNU General Public License.
31 #include <sstream>
32 #include <locale>
33 #include <iomanip>
34 #include <testsuite_hooks.h>
36 struct MyNP : std::numpunct<char>
38 std::string do_truename() const;
39 std::string do_falsename() const;
42 std::string MyNP::do_truename() const
44 std::string s("yea");
45 return s;
48 std::string MyNP::do_falsename() const
50 std::string s("nay");
51 return s;
54 void
55 test01()
57 bool test = true;
58 const char lit[] = "1 0\ntrue false\n: true:\n:true :\n: false:\n: 1:"
59 "\n:1 :\n: 0:\nyea nay\n: yea:\n:yea :\n: nay:\n";
60 std::ostringstream oss;
61 oss << true << " " << false << std::endl;
62 oss << std::boolalpha;
63 oss << true << " " << false << std::endl;
65 oss << ":" << std::setw(6) << std::internal << true << ":" << std::endl;
66 oss << ":" << std::setw(6) << std::left << true << ":" << std::endl;
67 oss << ":" << std::setw(6) << std::right << false << ":" << std::endl;
68 oss << std::noboolalpha;
69 oss << ":" << std::setw(3) << std::internal << true << ":" << std::endl;
70 oss << ":" << std::setw(3) << std::left << true << ":" << std::endl;
71 oss << ":" << std::setw(3) << std::right << false << ":" << std::endl;
73 std::locale loc = std::locale (std::locale::classic(), new MyNP);
74 oss.imbue(loc);
76 oss << std::boolalpha;
77 oss << true << " " << false << std::endl;
79 oss << ":" << std::setw(6) << std::internal << true << ":" << std::endl;
80 oss << ":" << std::setw(6) << std::left << true << ":" << std::endl;
81 oss << ":" << std::setw(6) << std::right << false << ":" << std::endl;
83 VERIFY( oss.good() );
84 VERIFY( oss.str() == lit );
87 void
88 test02()
90 bool test = true;
91 const std::string strue("true");
92 const std::string sfalse("false");
93 std::string str01;
94 std::string str02;
96 std::locale loc("");
97 std::ostringstream ostr01;
98 ostr01.imbue(loc);
99 std::ios_base::fmtflags ff = ostr01.flags(std::ios_base::boolalpha);
101 ostr01 << true;
102 str02 = ostr01.str();
103 VERIFY( str02 == strue );
105 ostr01.str(str01);
106 ostr01 << false;
107 str02 = ostr01.str();
108 VERIFY( str02 == sfalse );
110 VERIFY( test );
113 int
114 main()
116 test01();
117 test02();
118 return 0;
121 // Projected output:
124 true false
125 : true:
126 :true :
127 : false:
128 : 1:
129 :1 :
130 : 0:
131 yea nay
132 : yea:
133 :yea :
134 : nay: