]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
1 // 1999-11-15 Kevin Ediger <kediger@licor.com>
2 // test the floating point inserters (facet num_put)
4 // Copyright (C) 1999-2019 Free Software Foundation, Inc.
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 3, or (at your option)
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 COPYING3. If not see
19 // <http://www.gnu.org/licenses/>.
21 #include <cstdio> // for sprintf
26 #include <testsuite_hooks.h>
33 // make sure we can output a very long float
34 long double val
= numeric_limits
<long double>::max();
35 int prec
= numeric_limits
<long double>::digits10
;
39 os
.setf(ios::scientific
);
43 sprintf(largebuf
, "%.*Le", prec
, val
);
44 #ifdef TEST_NUMPUT_VERBOSE
45 cout
<< "expect: " << largebuf
<< endl
;
46 cout
<< "result: " << os
.str() << endl
;
48 VERIFY( os
&& os
.str() == largebuf
);
50 // Make sure we can output a long float in fixed format
51 // without seg-faulting (libstdc++/4402)
52 double val2
= numeric_limits
<double>::max();
59 sprintf(largebuf
, "%.*f", 3, val2
);
60 #ifdef TEST_NUMPUT_VERBOSE
61 cout
<< "expect: " << largebuf
<< endl
;
62 cout
<< "result: " << os2
.str() << endl
;
64 VERIFY( os2
&& os2
.str() == largebuf
);