|
1 |
|
2 |
|
3 /*************************************************************************** |
|
4 * |
|
5 * 22.locale.num.put.cpp - tests exercising the std::num_put facet |
|
6 * |
|
7 * $Id: 22.locale.num.put.cpp 290034 2005-09-19 00:48:21Z sebor $ |
|
8 * |
|
9 *************************************************************************** |
|
10 * |
|
11 * Copyright (c) 1994-2005 Quovadx, Inc., acting through its Rogue Wave |
|
12 * Software division. Licensed under the Apache License, Version 2.0 (the |
|
13 * "License"); you may not use this file except in compliance with the |
|
14 * License. You may obtain a copy of the License at |
|
15 * http://www.apache.org/licenses/LICENSE-2.0. Unless required by |
|
16 * applicable law or agreed to in writing, software distributed under |
|
17 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR |
|
18 * CONDITIONS OF ANY KIND, either express or implied. See the License |
|
19 * for the specific language governing permissions and limitations under |
|
20 * the License. |
|
21 * |
|
22 **************************************************************************/ |
|
23 |
|
24 #ifdef __GNUG__ |
|
25 // prevent gcc -Wshadow warnings for convenience types |
|
26 # define ushort __rw_ushort |
|
27 # define uint __rw_uint |
|
28 # define ulong __rw_ulong |
|
29 # include <sys/types.h> |
|
30 # undef ushort |
|
31 # undef uint |
|
32 # undef ulong |
|
33 #endif // __GNUG__ |
|
34 |
|
35 #include <ios> |
|
36 #include <locale> |
|
37 |
|
38 #include <cerrno> // for ERANGE, errno |
|
39 #include <cfloat> // for floating limits macros |
|
40 #include <climits> // for integral limits macros |
|
41 #include <clocale> // for LC_NUMERIC, setlocale() |
|
42 #include <cstdio> // for sprintf() |
|
43 #include <cstdlib> // for mbstowcs() |
|
44 |
|
45 #include <any.h> // for TOSTR() |
|
46 #include <cmdopt.h> // for rw_enabled |
|
47 #include <driver.h> // for rw_test |
|
48 #include <localedef.h> // for rw_locales |
|
49 #include <valcmp.h> // for rw_equal |
|
50 #include"std_log_result.h" |
|
51 #define LOG_FILENAME_LINE __FILE__, __LINE__ |
|
52 int failures=0; |
|
53 |
|
54 /**************************************************************************/ |
|
55 //#if 0 |
|
56 // set by the command line option handler in response to: |
|
57 static int rw_opt_enable_num_get = 0; // --enable-num_get |
|
58 static int rw_opt_no_errno = 0; // --no-errno |
|
59 static int rw_opt_no_grouping = 0; // --no-grouping |
|
60 static int rw_opt_no_widen = 0; // --no-widen |
|
61 |
|
62 /**************************************************************************/ |
|
63 |
|
64 // replacement ctype facet |
|
65 template <class charT> |
|
66 struct Ctype: std::ctype<charT> |
|
67 { |
|
68 typedef std::ctype<charT> Base; |
|
69 |
|
70 typedef typename Base::char_type char_type; |
|
71 |
|
72 static int n_widen_; |
|
73 |
|
74 Ctype (): Base (0, 0, 1) { } |
|
75 |
|
76 virtual char_type do_widen (char c) const { |
|
77 ++n_widen_; |
|
78 |
|
79 switch (c) { |
|
80 case '0': c = '9'; break; |
|
81 case '1': c = '8'; break; |
|
82 case '2': c = '7'; break; |
|
83 case '3': c = '6'; break; |
|
84 case '4': c = '5'; break; |
|
85 case '5': c = '4'; break; |
|
86 case '6': c = '3'; break; |
|
87 case '7': c = '2'; break; |
|
88 case '8': c = '1'; break; |
|
89 case '9': c = '0'; break; |
|
90 default: break; |
|
91 } |
|
92 |
|
93 return char_type (c); |
|
94 } |
|
95 |
|
96 virtual const char_type* |
|
97 do_widen (const char *lo, const char *hi, char_type *dst) const { |
|
98 return Base::do_widen (lo, hi, dst); |
|
99 } |
|
100 }; |
|
101 |
|
102 template <class charT> |
|
103 int Ctype<charT>::n_widen_; |
|
104 |
|
105 |
|
106 /**************************************************************************/ |
|
107 |
|
108 // replacement numpunct facet |
|
109 |
|
110 template <class charT> |
|
111 struct Punct: std::numpunct<charT> |
|
112 { |
|
113 typedef typename std::numpunct<charT>::char_type char_type; |
|
114 typedef typename std::numpunct<charT>::string_type string_type; |
|
115 |
|
116 static char_type decimal_point_; |
|
117 static char_type thousands_sep_; |
|
118 static const char *grouping_; |
|
119 static const char_type *truename_; |
|
120 static const char_type *falsename_; |
|
121 |
|
122 static int n_objs_; // number of facet objects in existence |
|
123 static int n_thousands_sep_; // number of calls to do_thousands_sep() |
|
124 |
|
125 Punct (std::size_t ref = 0) |
|
126 : std::numpunct<charT>(ref) { |
|
127 ++n_objs_; |
|
128 } |
|
129 |
|
130 ~Punct () { |
|
131 --n_objs_; |
|
132 } |
|
133 |
|
134 virtual char_type do_decimal_point () const { |
|
135 return decimal_point_; |
|
136 } |
|
137 |
|
138 virtual std::string do_grouping () const { |
|
139 return grouping_; |
|
140 } |
|
141 |
|
142 virtual char_type do_thousands_sep () const { |
|
143 ++n_thousands_sep_; |
|
144 return thousands_sep_; |
|
145 } |
|
146 |
|
147 virtual string_type do_truename () const { |
|
148 return truename_ ? string_type (truename_) : string_type (); |
|
149 } |
|
150 |
|
151 virtual string_type do_falsename () const { |
|
152 return falsename_ ? string_type (falsename_) : string_type (); |
|
153 } |
|
154 }; |
|
155 |
|
156 template <class charT> |
|
157 const char* Punct<charT>::grouping_ = ""; |
|
158 |
|
159 template <class charT> |
|
160 typename Punct<charT>::char_type Punct<charT>::decimal_point_ = '.'; |
|
161 |
|
162 template <class charT> |
|
163 typename Punct<charT>::char_type Punct<charT>::thousands_sep_ = ','; |
|
164 |
|
165 template <class charT> |
|
166 const typename Punct<charT>::char_type* Punct<charT>::truename_; |
|
167 |
|
168 template <class charT> |
|
169 const typename Punct<charT>::char_type* Punct<charT>::falsename_; |
|
170 |
|
171 template <class charT> |
|
172 int Punct<charT>::n_thousands_sep_; |
|
173 |
|
174 template <class charT> |
|
175 int Punct<charT>::n_objs_; |
|
176 |
|
177 |
|
178 /**************************************************************************/ |
|
179 |
|
180 template <class charT> |
|
181 struct Ios: std::basic_ios<charT> |
|
182 { |
|
183 Ios () { this->init (0); } |
|
184 }; |
|
185 |
|
186 |
|
187 template <class charT> |
|
188 struct NumGet: std::num_get<charT, const charT*> { NumGet () { } }; |
|
189 |
|
190 |
|
191 template <class charT> |
|
192 struct NumPut: std::num_put<charT, charT*> |
|
193 { |
|
194 typedef std::num_put<charT, charT*> Base; |
|
195 typedef typename Base::char_type char_type; |
|
196 typedef typename Base::iter_type iter_type; |
|
197 |
|
198 enum { |
|
199 test_bool, test_short, test_ushort, test_int, test_uint, |
|
200 test_long, test_ulong, test_llong, test_ullong, |
|
201 test_pvoid, test_float, test_double, test_ldouble |
|
202 }; |
|
203 |
|
204 static int ncalls_ [13]; |
|
205 |
|
206 NumPut (std::size_t ref = 0): Base (ref) { } |
|
207 |
|
208 #ifndef _RWSTD_NO_BOOL |
|
209 |
|
210 virtual iter_type |
|
211 do_put (iter_type it, std::ios_base &f, char_type fill, bool v) const { |
|
212 ++ncalls_ [test_bool]; |
|
213 return Base::do_put (it, f, fill, v); |
|
214 } |
|
215 |
|
216 #endif // _RWSTD_NO_BOOL |
|
217 |
|
218 virtual iter_type |
|
219 do_put (iter_type it, std::ios_base &f, char_type fill, long v) const { |
|
220 ++ncalls_ [test_long]; |
|
221 return Base::do_put (it, f, fill, v); |
|
222 } |
|
223 |
|
224 virtual iter_type |
|
225 do_put (iter_type it, std::ios_base &f, char_type fill, |
|
226 unsigned long v) const { |
|
227 ++ncalls_ [test_ulong]; |
|
228 return Base::do_put (it, f, fill, v); |
|
229 } |
|
230 |
|
231 #ifdef _RWSTD_LONG_LONG |
|
232 |
|
233 // provided as an extension unless _RWSTD_NO_LONG_LONG is #defined |
|
234 virtual iter_type |
|
235 do_put (iter_type it, std::ios_base &f, char_type fill, |
|
236 unsigned _RWSTD_LONG_LONG v) const { |
|
237 ++ncalls_ [test_ullong]; |
|
238 return Base::do_put (it, f, fill, v); |
|
239 } |
|
240 |
|
241 // provided as an extension unless _RWSTD_NO_LONG_LONG is #defined |
|
242 virtual iter_type |
|
243 do_put (iter_type it, std::ios_base &f, char_type fill, |
|
244 _RWSTD_LONG_LONG v) const { |
|
245 ++ncalls_ [test_llong]; |
|
246 return Base::do_put (it, f, fill, v); |
|
247 } |
|
248 |
|
249 #endif // _RWSTD_LONG_LONG |
|
250 |
|
251 virtual iter_type |
|
252 do_put (iter_type it, std::ios_base &f, char_type fill, double v) const { |
|
253 ++ncalls_ [test_double]; |
|
254 return Base::do_put (it, f, fill, v); |
|
255 } |
|
256 |
|
257 #ifndef __SYMBIAN32__ |
|
258 #ifndef _RWSTD_NO_LONG_DOUBLE |
|
259 |
|
260 virtual iter_type |
|
261 do_put (iter_type it, std::ios_base &f, char_type fill, |
|
262 long double v) const { |
|
263 ++ncalls_ [test_ldouble]; |
|
264 return Base::do_put (it, f, fill, v); |
|
265 } |
|
266 #endif |
|
267 #endif // _RWSTD_NO_LONG_DOUBLE |
|
268 |
|
269 virtual iter_type |
|
270 do_put (iter_type it, std::ios_base &f, char_type fill, |
|
271 const void *v) const { |
|
272 ++ncalls_ [test_pvoid]; |
|
273 return Base::do_put (it, f, fill, v); |
|
274 } |
|
275 }; |
|
276 |
|
277 |
|
278 // explicit initialization of the static array below used |
|
279 // to work around a SunPro 5.4 bug (PR #27293) |
|
280 template <class charT> |
|
281 /* static */ int NumPut<charT>::ncalls_ [13] = { 0 }; |
|
282 |
|
283 /**************************************************************************/ |
|
284 |
|
285 template <class charT, class T> |
|
286 void do_test (charT /* dummy */, |
|
287 const char *cname, // charT name |
|
288 const char *tname, // T name |
|
289 int lineno, // line number |
|
290 T val, // value to format |
|
291 int flags, // ios flags |
|
292 std::streamsize prec, // precision |
|
293 std::streamsize width, // field width |
|
294 char fill, // fill character |
|
295 const char *grouping, // grouping string |
|
296 const char *str, // expected output |
|
297 int err_expect = -1, // expected iostate |
|
298 T val_expect = T () /* expected num_get result */) |
|
299 { |
|
300 if (!rw_enabled (lineno)) { |
|
301 rw_note (0, __FILE__, __LINE__, "test on line %d disabled", lineno); |
|
302 return; |
|
303 } |
|
304 |
|
305 // create a distinct punctuation facet for each iteration to make sure |
|
306 // any data cached in between successive calls to the facet's public |
|
307 // member functions are flushed |
|
308 const Punct<charT> pun (1); |
|
309 |
|
310 Ios<charT> ios; |
|
311 NumPut<charT> np; |
|
312 |
|
313 ios.imbue (std::locale (ios.getloc (), (const std::numpunct<charT>*)&pun)); |
|
314 |
|
315 ios.flags (std::ios_base::fmtflags (flags)); |
|
316 ios.precision (prec); |
|
317 ios.width (width); |
|
318 pun.grouping_ = grouping; |
|
319 |
|
320 //#if defined (_RWSTD_LDBL_MAX_10_EXP) |
|
321 |
|
322 // charT buf [_RWSTD_LDBL_MAX_10_EXP + 2] = { 0 }; |
|
323 |
|
324 //#else // if !defined (_RWSTD_LDBL_MAX_10_EXP) |
|
325 |
|
326 //charT buf [4096] = { 0 }; |
|
327 charT buf [512] = { 0 }; |
|
328 |
|
329 //#endif // _RWSTD_LDBL_MAX_10_EXP |
|
330 |
|
331 const charT* const bufend = np.put (buf, ios, fill, val); |
|
332 |
|
333 // verify 22.2.2.2.2, p21 |
|
334 if (ios.width ()) { |
|
335 |
|
336 static int width_fail = 0; |
|
337 |
|
338 // fail at most once for each specialization |
|
339 #ifndef __SYMBIAN32__ |
|
340 rw_assert (!width_fail++, 0, lineno, |
|
341 "%line d: num_put<%s>::put (..., %s = %s) " |
|
342 "failed to reset width from %d; width() = %d", |
|
343 __LINE__, cname, tname, TOSTR (val), |
|
344 TOSTR (buf), width, ios.width ()); |
|
345 #else |
|
346 { |
|
347 |
|
348 if(width_fail++) |
|
349 { |
|
350 |
|
351 failures++; |
|
352 std_log(LOG_FILENAME_LINE,"Reason:Failing") ; |
|
353 |
|
354 } |
|
355 } |
|
356 |
|
357 #endif |
|
358 } |
|
359 |
|
360 /******************************************************************/ |
|
361 |
|
362 if (str) { |
|
363 |
|
364 char cbuf [sizeof buf / sizeof *buf] = { '\0' }; |
|
365 |
|
366 if ('%' == *str) { |
|
367 std::sprintf (cbuf, str, val); |
|
368 str = cbuf; |
|
369 |
|
370 #if defined (_WIN32) || defined (_WIN64) |
|
371 |
|
372 std::size_t len = std::strlen (str); |
|
373 |
|
374 if ( ('e' == cbuf [len - 5] || 'E' == cbuf [len - 5]) |
|
375 && ('-' == cbuf [len - 4] || '+' == cbuf [len - 4]) |
|
376 && ('0' == cbuf [len - 3])) { |
|
377 cbuf [len - 3] = cbuf [len - 2]; |
|
378 cbuf [len - 2] = cbuf [len - 1]; |
|
379 cbuf [len - 1] = cbuf [len]; |
|
380 } |
|
381 |
|
382 #endif // _WIN{32,64} |
|
383 } |
|
384 |
|
385 #ifndef __SYMBIAN32__ |
|
386 // compare output produced by num_put with that produced by printf() |
|
387 rw_assert (0 == rw_strncmp (buf, str), 0, lineno, |
|
388 "line %d: num_put<%s>::put (..., %s = %s) " |
|
389 "wrote %{*Ac}, expected %{*Ac}, " |
|
390 "flags = %{If}, precision = %d" |
|
391 "%{?}, grouping = \"%#s\"%{;}", |
|
392 __LINE__, cname, tname, TOSTR (val), |
|
393 sizeof *buf, buf, sizeof *str, str, |
|
394 flags, prec, |
|
395 grouping && *grouping, grouping); |
|
396 #else |
|
397 { |
|
398 if(0 != rw_strncmp (buf, str)){ |
|
399 failures++; |
|
400 std_log(LOG_FILENAME_LINE,"Reason: Failing");} |
|
401 |
|
402 } |
|
403 #endif // __SYMBIAN32__ |
|
404 } |
|
405 |
|
406 /******************************************************************/ |
|
407 |
|
408 #ifndef NO_NUM_GET |
|
409 |
|
410 if (!rw_opt_enable_num_get) |
|
411 return; |
|
412 |
|
413 // skip negative precision (extension requiring special treatment) |
|
414 if (prec < 0) |
|
415 return; |
|
416 |
|
417 const charT *next = buf; |
|
418 |
|
419 // skip leading fill characters (if any) |
|
420 for ( ; *next == fill; ++next); |
|
421 |
|
422 // find the first non-fill character if it exists |
|
423 const charT *last = next; |
|
424 for ( ; *last && *last != fill; ++last); |
|
425 for ( ; *last && *last == fill; ++last); |
|
426 |
|
427 // do not perform extraction if there are any fill characters |
|
428 // in the middle of output (they serve as punctuators and break |
|
429 // up the input sequence) |
|
430 if (next != last && *last) |
|
431 return; |
|
432 |
|
433 // do not perform extraction if the fill character is the minus |
|
434 // sign, the plus sign, the thousands separator, the decimal point, |
|
435 // or a digit |
|
436 if ( '-' == fill |
|
437 || '+' == fill |
|
438 || pun.thousands_sep_ == fill |
|
439 || pun.decimal_point_ == fill |
|
440 || fill >= '0' && fill <= '9') |
|
441 return; |
|
442 |
|
443 // do not perform extraction if there is no data to extract |
|
444 // (unless this is an extraction-only test) |
|
445 if (!*next && str) |
|
446 return; |
|
447 |
|
448 NumGet<charT> ng; |
|
449 |
|
450 T x = T (); |
|
451 |
|
452 std::ios_base::iostate err = std::ios_base::goodbit; |
|
453 |
|
454 if (-1 == err_expect) { |
|
455 |
|
456 // lwg issue 17: special treatment for bool: |
|
457 |
|
458 // The in iterator is always left pointing one position beyond |
|
459 // the last character successfully matched. If val is set, then |
|
460 // err is set to str.goodbit; or to str.eofbit if, when seeking |
|
461 // another character to match, it is found that (in==end). If |
|
462 // val is not set, then err is set to str.failbit; or to |
|
463 // (str.failbit|str.eofbit) if the reason for the failure was |
|
464 // that (in==end). [Example: for targets true:"a" and false:"abb", |
|
465 // the input sequence "a" yields val==true and err==str.eofbit; |
|
466 // the input sequence "abc" yields err=str.failbit, with in ending |
|
467 // at the 'c' element. For targets true:"1" and false:"0", the |
|
468 // input sequence "1" yields val==true and err=str.goodbit. For |
|
469 // empty targets (""), any input sequence yields err==str.failbit. |
|
470 // --end example] |
|
471 |
|
472 err_expect = T (1) == T (2) && flags & std::ios::boolalpha |
|
473 ? std::ios::goodbit |
|
474 : last == bufend && last [-1] != fill |
|
475 ? std::ios::eofbit : std::ios::goodbit; |
|
476 |
|
477 val_expect = val; |
|
478 } |
|
479 |
|
480 last = ng.get (next, bufend, ios, err, x); |
|
481 #ifndef __SYMBIAN32__ |
|
482 // verify the state |
|
483 rw_assert (err == err_expect, 0, lineno, |
|
484 "line %d: num_get<%s>::get (%s, ..., %s&) " |
|
485 "flags = %{If}, " |
|
486 "%{?}grouping = \"%#s\", %{;}" |
|
487 "iostate = %{Is}, expected %{Is}", |
|
488 __LINE__, cname, |
|
489 TOSTR (next), tname, |
|
490 flags, |
|
491 grouping && *grouping, grouping, |
|
492 err, err_expect); |
|
493 |
|
494 // verify the parsed value |
|
495 rw_assert (rw_equal (x, val_expect), 0, lineno, |
|
496 "line %d: num_get<%s>::get (%s, ..., %s&) got %s, " |
|
497 "expected %s, flags = %{If}, " |
|
498 "%{?}grouping = \"%#s\", %{;}", |
|
499 __LINE__, cname, |
|
500 TOSTR (next), tname, |
|
501 TOSTR (x), TOSTR (val_expect), |
|
502 flags, |
|
503 grouping && *grouping, grouping); |
|
504 #else |
|
505 { |
|
506 |
|
507 if(err != err_expect) |
|
508 { |
|
509 failures++; |
|
510 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
511 } |
|
512 if(!rw_equal (x, val_expect)) |
|
513 { |
|
514 failures++; |
|
515 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
516 } |
|
517 |
|
518 |
|
519 |
|
520 } |
|
521 #endif//__SYMBIAN32__ |
|
522 #else |
|
523 |
|
524 _RWSTD_UNUSED (bufend); |
|
525 _RWSTD_UNUSED (err_expect); |
|
526 _RWSTD_UNUSED (val_expect); |
|
527 |
|
528 #endif // NO_NUM_GET |
|
529 |
|
530 } |
|
531 |
|
532 /**************************************************************************/ |
|
533 |
|
534 template <class charT> |
|
535 struct Streambuf: std::basic_streambuf<charT, std::char_traits<charT> > { }; |
|
536 #if 0 //FIX |
|
537 template <class charT> |
|
538 void direct_use_test (charT, const char *cname) |
|
539 { |
|
540 _RWSTD_UNUSED (cname); |
|
541 |
|
542 // verify that num_put objects can be used directly w/o first |
|
543 // having been installed in a locale object; the behavior of |
|
544 // such facets is unspecified (but not undefined) |
|
545 |
|
546 Ios<charT> ios; |
|
547 |
|
548 const std::num_put<charT> np; //can not directly instantiate num_put, it is illegal, same behaviour in linux also |
|
549 |
|
550 Streambuf<charT> sb; |
|
551 |
|
552 #define DIRECT_USE_TEST(T) \ |
|
553 np.put (std::ostreambuf_iterator<charT>(&sb), ios, charT (), (T)0) |
|
554 |
|
555 #ifndef _RWSTD_NO_BOOL |
|
556 |
|
557 DIRECT_USE_TEST (bool); |
|
558 |
|
559 #endif // _RWSTD_NO_BOOL |
|
560 |
|
561 DIRECT_USE_TEST (unsigned long); |
|
562 DIRECT_USE_TEST (long); |
|
563 DIRECT_USE_TEST (double); |
|
564 |
|
565 #ifndef _RWSTD_NO_LONG_DOUBLE |
|
566 |
|
567 DIRECT_USE_TEST (long double); |
|
568 |
|
569 #endif |
|
570 |
|
571 DIRECT_USE_TEST (void*); |
|
572 } |
|
573 #endif |
|
574 /**************************************************************************/ |
|
575 |
|
576 |
|
577 // for convenience |
|
578 #define boolalpha std::ios_base::boolalpha |
|
579 #define dec std::ios_base::dec |
|
580 #define fixed std::ios_base::fixed |
|
581 #define hex std::ios_base::hex |
|
582 #define internal std::ios_base::internal |
|
583 #define left std::ios_base::left |
|
584 #define oct std::ios_base::oct |
|
585 #define right std::ios_base::right |
|
586 #define scientific std::ios_base::scientific |
|
587 #define showbase std::ios_base::showbase |
|
588 #define showpoint std::ios_base::showpoint |
|
589 #define showpos std::ios_base::showpos |
|
590 #define skipws std::ios_base::skipws |
|
591 #define unitbuf std::ios_base::unitbuf |
|
592 #define uppercase std::ios_base::uppercase |
|
593 //#define bin std::ios_base::bin //it is not bin its is binary |
|
594 #define bin std::ios_base::binary |
|
595 #define adjustfield std::ios_base::adjustfield |
|
596 #define basefield std::ios_base::basefield |
|
597 #define floatfield std::ios_base::floatfield |
|
598 #define nolock std::ios_base::nolock |
|
599 #define nolockbuf std::ios_base::nolockbuf |
|
600 |
|
601 #define Bad std::ios_base::badbit |
|
602 #define Eof std::ios_base::eofbit |
|
603 #define Fail std::ios_base::failbit |
|
604 #define Good std::ios_base::goodbit |
|
605 |
|
606 |
|
607 template <class charT> |
|
608 void bool_test (charT, const char *cname) |
|
609 { |
|
610 #ifndef _RWSTD_NO_BOOL |
|
611 |
|
612 rw_info (0, 0, __LINE__, "std::num_put<%s>::put (..., bool)", cname); |
|
613 |
|
614 const char* const tname = "bool"; |
|
615 |
|
616 static const charT boolnames[][4] = { |
|
617 { 'y', 'e', 's', '\0' }, { 'n', 'o', '.', '\0' }, |
|
618 |
|
619 // unusual strings to try to trip up the formatting algorithm |
|
620 { '+', '1', '\0' }, { '-', '2', '\0' }, |
|
621 { '-', '+', '1', '\0' }, { '+', '-', '0', '\0' }, |
|
622 { '\001', '\0' }, { '\0' } |
|
623 }; |
|
624 |
|
625 Punct<charT>::decimal_point_ = '*'; |
|
626 Punct<charT>::truename_ = boolnames [0]; |
|
627 Punct<charT>::falsename_ = boolnames [1]; |
|
628 |
|
629 // set line number to __LINE__ and perform test so that |
|
630 // assertion output will point to the failed TEST line |
|
631 #define TEST do_test |
|
632 #define T charT (), cname, tname, __LINE__ |
|
633 |
|
634 std_log(LOG_FILENAME_LINE,"Test start"); |
|
635 TEST (T, false, 0, 0, 0, ' ', "", "0"); |
|
636 std_log(LOG_FILENAME_LINE,"Test end"); |
|
637 std_log(LOG_FILENAME_LINE,"Test start"); |
|
638 |
|
639 TEST (T, true, 0, 0, 0, ' ', "", "1"); |
|
640 std_log(LOG_FILENAME_LINE,"Test end"); |
|
641 std_log(LOG_FILENAME_LINE,"Test start"); |
|
642 |
|
643 TEST (T, false, 0, 0, 0, ' ', "", "%d"); |
|
644 std_log(LOG_FILENAME_LINE,"Test end"); |
|
645 std_log(LOG_FILENAME_LINE,"Test start"); |
|
646 TEST (T, true, 0, 0, 0, ' ', "", "%d"); |
|
647 std_log(LOG_FILENAME_LINE,"Test end"); |
|
648 std_log(LOG_FILENAME_LINE,"Test start"); |
|
649 |
|
650 TEST (T, false, showpos, 0, 0, ' ', "", "%+d"); |
|
651 std_log(LOG_FILENAME_LINE,"Test end"); |
|
652 std_log(LOG_FILENAME_LINE,"Test start"); |
|
653 TEST (T, true, showpos, 0, 0, ' ', "", "%+d"); |
|
654 std_log(LOG_FILENAME_LINE,"Test end"); |
|
655 std_log(LOG_FILENAME_LINE,"Test start"); |
|
656 |
|
657 TEST (T, false, oct, 0, 0, ' ', "", "%o"); |
|
658 std_log(LOG_FILENAME_LINE,"Test end"); |
|
659 std_log(LOG_FILENAME_LINE,"Test start"); |
|
660 TEST (T, true, oct, 0, 0, ' ', "", "%o"); |
|
661 std_log(LOG_FILENAME_LINE,"Test end"); |
|
662 std_log(LOG_FILENAME_LINE,"Test start"); |
|
663 |
|
664 TEST (T, false, dec, 0, 0, ' ', "", "%d"); |
|
665 std_log(LOG_FILENAME_LINE,"Test end"); |
|
666 std_log(LOG_FILENAME_LINE,"Test start"); |
|
667 TEST (T, true, dec, 0, 0, ' ', "", "%d"); |
|
668 std_log(LOG_FILENAME_LINE,"Test end"); |
|
669 std_log(LOG_FILENAME_LINE,"Test start"); |
|
670 |
|
671 TEST (T, false, hex, 0, 0, ' ', "", "%x"); |
|
672 std_log(LOG_FILENAME_LINE,"Test end"); |
|
673 std_log(LOG_FILENAME_LINE,"Test start"); |
|
674 TEST (T, true, hex, 0, 0, ' ', "", "%x"); |
|
675 std_log(LOG_FILENAME_LINE,"Test end"); |
|
676 std_log(LOG_FILENAME_LINE,"Test start"); |
|
677 |
|
678 rw_info (0, 0, __LINE__, "std::ios::boolalpha"); |
|
679 |
|
680 TEST (T, false, boolalpha, 0, 0, ' ', "", "no."); |
|
681 std_log(LOG_FILENAME_LINE,"Test end"); |
|
682 std_log(LOG_FILENAME_LINE,"Test start"); |
|
683 TEST (T, true, boolalpha, 0, 0, ' ', "", "yes"); |
|
684 std_log(LOG_FILENAME_LINE,"Test end"); |
|
685 std_log(LOG_FILENAME_LINE,"Test start"); |
|
686 |
|
687 // left justified boolalpha |
|
688 TEST (T, false, boolalpha | left, 0, 6, ' ', "", "no. "); |
|
689 std_log(LOG_FILENAME_LINE,"Test end"); |
|
690 std_log(LOG_FILENAME_LINE,"Test start"); |
|
691 TEST (T, true, boolalpha | left, 0, 6, ' ', "", "yes "); |
|
692 std_log(LOG_FILENAME_LINE,"Test end"); |
|
693 std_log(LOG_FILENAME_LINE,"Test start"); |
|
694 |
|
695 // right justified boolalpha |
|
696 TEST (T, false, boolalpha | right, 0, 6, ' ', "", " no."); |
|
697 std_log(LOG_FILENAME_LINE,"Test end"); |
|
698 std_log(LOG_FILENAME_LINE,"Test start"); |
|
699 TEST (T, true, boolalpha | right, 0, 6, ' ', "", " yes"); |
|
700 std_log(LOG_FILENAME_LINE,"Test end"); |
|
701 std_log(LOG_FILENAME_LINE,"Test start"); |
|
702 |
|
703 // implied right justified boolalpha (internal bit set) |
|
704 TEST (T, false, boolalpha | internal, 0, 4, ' ', "", " no."); |
|
705 std_log(LOG_FILENAME_LINE,"Test end"); |
|
706 std_log(LOG_FILENAME_LINE,"Test start"); |
|
707 TEST (T, true, boolalpha | internal, 0, 4, ' ', "", " yes"); |
|
708 std_log(LOG_FILENAME_LINE,"Test end"); |
|
709 |
|
710 |
|
711 |
|
712 Punct<charT>::truename_ = boolnames [2]; |
|
713 Punct<charT>::falsename_ = boolnames [3]; |
|
714 |
|
715 std_log(LOG_FILENAME_LINE,"Test start"); |
|
716 |
|
717 TEST (T, false, boolalpha, 0, 1, ' ', "", "-2"); |
|
718 std_log(LOG_FILENAME_LINE,"Test end"); |
|
719 std_log(LOG_FILENAME_LINE,"Test start"); |
|
720 TEST (T, true, boolalpha, 0, 1, ' ', "", "+1"); |
|
721 std_log(LOG_FILENAME_LINE,"Test end"); |
|
722 std_log(LOG_FILENAME_LINE,"Test start"); |
|
723 |
|
724 TEST (T, false, boolalpha | internal, 0, 4, ' ', "", " -2"); |
|
725 std_log(LOG_FILENAME_LINE,"Test end"); |
|
726 std_log(LOG_FILENAME_LINE,"Test start"); |
|
727 TEST (T, true, boolalpha | internal, 0, 4, ' ', "", " +1"); |
|
728 std_log(LOG_FILENAME_LINE,"Test end"); |
|
729 |
|
730 |
|
731 |
|
732 Punct<charT>::truename_ = boolnames [4]; |
|
733 Punct<charT>::falsename_ = boolnames [5]; |
|
734 |
|
735 std_log(LOG_FILENAME_LINE,"Test start"); |
|
736 |
|
737 TEST (T, false, boolalpha, 0, 1, ' ', "", "+-0"); |
|
738 std_log(LOG_FILENAME_LINE,"Test end"); |
|
739 std_log(LOG_FILENAME_LINE,"Test start"); |
|
740 TEST (T, true, boolalpha, 0, 1, ' ', "", "-+1"); |
|
741 std_log(LOG_FILENAME_LINE,"Test end"); |
|
742 std_log(LOG_FILENAME_LINE,"Test start"); |
|
743 |
|
744 TEST (T, false, boolalpha | internal, 0, 4, ' ', "", " +-0"); |
|
745 std_log(LOG_FILENAME_LINE,"Test end"); |
|
746 std_log(LOG_FILENAME_LINE,"Test start"); |
|
747 TEST (T, true, boolalpha | internal, 0, 4, ' ', "", " -+1"); |
|
748 std_log(LOG_FILENAME_LINE,"Test end"); |
|
749 |
|
750 |
|
751 |
|
752 Punct<charT>::truename_ = boolnames [6]; |
|
753 Punct<charT>::falsename_ = boolnames [7]; |
|
754 |
|
755 std_log(LOG_FILENAME_LINE,"Test start"); |
|
756 |
|
757 TEST (T, false, boolalpha, 0, 0, ' ', "", ""); |
|
758 std_log(LOG_FILENAME_LINE,"Test end"); |
|
759 std_log(LOG_FILENAME_LINE,"Test start"); |
|
760 TEST (T, true, boolalpha, 0, 0, ' ', "", "\001"); |
|
761 std_log(LOG_FILENAME_LINE,"Test end"); |
|
762 std_log(LOG_FILENAME_LINE,"Test start"); |
|
763 |
|
764 TEST (T, false, boolalpha, 0, 1, ' ', "", " "); |
|
765 std_log(LOG_FILENAME_LINE,"Test end"); |
|
766 std_log(LOG_FILENAME_LINE,"Test start"); |
|
767 TEST (T, true, boolalpha, 0, 1, ' ', "", "\001"); |
|
768 std_log(LOG_FILENAME_LINE,"Test end"); |
|
769 std_log(LOG_FILENAME_LINE,"Test start"); |
|
770 |
|
771 TEST (T, false, boolalpha, 0, 1, ',', "", ","); |
|
772 std_log(LOG_FILENAME_LINE,"Test end"); |
|
773 std_log(LOG_FILENAME_LINE,"Test start"); |
|
774 TEST (T, true, boolalpha, 0, 1, ',', "", "\001"); |
|
775 std_log(LOG_FILENAME_LINE,"Test end"); |
|
776 std_log(LOG_FILENAME_LINE,"Test start"); |
|
777 |
|
778 TEST (T, false, boolalpha | internal, 0,4, ',', "", ",,,,"); |
|
779 std_log(LOG_FILENAME_LINE,"Test end"); |
|
780 std_log(LOG_FILENAME_LINE,"Test start"); |
|
781 TEST (T, true, boolalpha | internal, 0,4, ',', "", ",,,\001"); |
|
782 std_log(LOG_FILENAME_LINE,"Test end"); |
|
783 |
|
784 |
|
785 #endif // _RWSTD_NO_BOOL |
|
786 |
|
787 } |
|
788 |
|
789 /**************************************************************************/ |
|
790 |
|
791 template <class charT> |
|
792 void long_test (charT, const char *cname) |
|
793 { |
|
794 const char* const tname = "long"; |
|
795 |
|
796 rw_info (0, 0, __LINE__, "std::num_put<%s>::put (..., %s)", cname, tname); |
|
797 |
|
798 // working around a VAC++/AIX bug where LONG_{MIN,MAX} are |
|
799 // of type int rather than long as required (see PR #28798) |
|
800 #ifndef LONG_MIN |
|
801 #undef LONG_MIN |
|
802 #define LONG_MIN _RWSTD_LONG_MIN |
|
803 #endif |
|
804 |
|
805 #ifndef LONG_MAX |
|
806 #undef LONG_MAX |
|
807 #define LONG_MAX _RWSTD_LONG_MAX |
|
808 #endif |
|
809 |
|
810 #undef GET_FAIL |
|
811 #define GET_FAIL (Eof | Fail), LONG_MAX |
|
812 |
|
813 ////////////////////////////////////////////////////////////////// |
|
814 // implicit decimal output |
|
815 rw_info (0, 0, __LINE__, "std::ios::fmtflags ()"); |
|
816 |
|
817 std_log(LOG_FILENAME_LINE,"Test start"); |
|
818 |
|
819 TEST (T, 0L, 0, 0, 0, ' ', "", "%ld"); |
|
820 std_log(LOG_FILENAME_LINE,"Test end"); |
|
821 std_log(LOG_FILENAME_LINE,"Test start"); |
|
822 TEST (T, 1L, 0, 0, 0, ' ', "", "%ld"); |
|
823 std_log(LOG_FILENAME_LINE,"Test end"); |
|
824 std_log(LOG_FILENAME_LINE,"Test start"); |
|
825 TEST (T, 2L, 0, 0, 0, ' ', "", "%ld"); |
|
826 std_log(LOG_FILENAME_LINE,"Test end"); |
|
827 std_log(LOG_FILENAME_LINE,"Test start"); |
|
828 TEST (T, -3L, 0, 0, 0, ' ', "", "%ld"); |
|
829 std_log(LOG_FILENAME_LINE,"Test end"); |
|
830 std_log(LOG_FILENAME_LINE,"Test start"); |
|
831 TEST (T, 12L, 0, 0, 0, ' ', "", "%ld"); |
|
832 std_log(LOG_FILENAME_LINE,"Test end"); |
|
833 std_log(LOG_FILENAME_LINE,"Test start"); |
|
834 TEST (T, -13L, 0, 0, 0, ' ', "", "%ld"); |
|
835 std_log(LOG_FILENAME_LINE,"Test end"); |
|
836 std_log(LOG_FILENAME_LINE,"Test start"); |
|
837 TEST (T, 345L, 0, 0, 0, ' ', "", "%ld"); |
|
838 std_log(LOG_FILENAME_LINE,"Test end"); |
|
839 std_log(LOG_FILENAME_LINE,"Test start"); |
|
840 TEST (T, -456L, 0, 0, 0, ' ', "", "%ld"); |
|
841 std_log(LOG_FILENAME_LINE,"Test end"); |
|
842 std_log(LOG_FILENAME_LINE,"Test start"); |
|
843 TEST (T, 6789L, 0, 0, 0, ' ', "", "%ld"); |
|
844 std_log(LOG_FILENAME_LINE,"Test end"); |
|
845 std_log(LOG_FILENAME_LINE,"Test start"); |
|
846 TEST (T, -7890L, 0, 0, 0, ' ', "", "%ld"); |
|
847 std_log(LOG_FILENAME_LINE,"Test end"); |
|
848 std_log(LOG_FILENAME_LINE,"Test start"); |
|
849 TEST (T, 98765L, 0, 0, 0, ' ', "", "%ld"); |
|
850 std_log(LOG_FILENAME_LINE,"Test end"); |
|
851 std_log(LOG_FILENAME_LINE,"Test start"); |
|
852 TEST (T, -98766L, 0, 0, 0, ' ', "", "%ld"); |
|
853 std_log(LOG_FILENAME_LINE,"Test end"); |
|
854 std_log(LOG_FILENAME_LINE,"Test start"); |
|
855 TEST (T, LONG_MAX, 0, 0, 0, ' ', "", "%ld"); |
|
856 std_log(LOG_FILENAME_LINE,"Test end"); |
|
857 std_log(LOG_FILENAME_LINE,"Test start"); |
|
858 TEST (T, LONG_MIN, 0, 0, 0, ' ', "", "%ld"); |
|
859 std_log(LOG_FILENAME_LINE,"Test end"); |
|
860 |
|
861 |
|
862 ////////////////////////////////////////////////////////////////// |
|
863 // explicit decimal ouptut |
|
864 rw_info (0, 0, __LINE__, "std::ios::dec"); |
|
865 |
|
866 std_log(LOG_FILENAME_LINE,"Test start"); |
|
867 |
|
868 TEST (T, 0L, dec, 0, 0, ' ', "", "%ld"); |
|
869 std_log(LOG_FILENAME_LINE,"Test end"); |
|
870 std_log(LOG_FILENAME_LINE,"Test start"); |
|
871 TEST (T, 1L, dec, 0, 0, ' ', "", "%ld"); |
|
872 std_log(LOG_FILENAME_LINE,"Test end"); |
|
873 std_log(LOG_FILENAME_LINE,"Test start"); |
|
874 TEST (T, 2L, dec, 0, 0, ' ', "", "%ld"); |
|
875 std_log(LOG_FILENAME_LINE,"Test end"); |
|
876 std_log(LOG_FILENAME_LINE,"Test start"); |
|
877 TEST (T, 12L, dec, 0, 0, ' ', "", "%ld"); |
|
878 std_log(LOG_FILENAME_LINE,"Test end"); |
|
879 std_log(LOG_FILENAME_LINE,"Test start"); |
|
880 TEST (T, 345L, dec, 0, 0, ' ', "", "%ld"); |
|
881 std_log(LOG_FILENAME_LINE,"Test end"); |
|
882 std_log(LOG_FILENAME_LINE,"Test start"); |
|
883 TEST (T, 6789L, dec, 0, 0, ' ', "", "%ld"); |
|
884 std_log(LOG_FILENAME_LINE,"Test end"); |
|
885 std_log(LOG_FILENAME_LINE,"Test start"); |
|
886 TEST (T, 98765L, dec, 0, 0, ' ', "", "%ld"); |
|
887 std_log(LOG_FILENAME_LINE,"Test end"); |
|
888 std_log(LOG_FILENAME_LINE,"Test start"); |
|
889 TEST (T, LONG_MAX, dec, 0, 0, ' ', "", "%ld"); |
|
890 std_log(LOG_FILENAME_LINE,"Test end"); |
|
891 std_log(LOG_FILENAME_LINE,"Test start"); |
|
892 |
|
893 TEST (T, ~0L, dec, 0, 0, ' ', "", "%ld"); |
|
894 std_log(LOG_FILENAME_LINE,"Test end"); |
|
895 std_log(LOG_FILENAME_LINE,"Test start"); |
|
896 TEST (T, -1L, dec, 0, 0, ' ', "", "%ld"); |
|
897 std_log(LOG_FILENAME_LINE,"Test end"); |
|
898 std_log(LOG_FILENAME_LINE,"Test start"); |
|
899 TEST (T, -2L, dec, 0, 0, ' ', "", "%ld"); |
|
900 std_log(LOG_FILENAME_LINE,"Test end"); |
|
901 std_log(LOG_FILENAME_LINE,"Test start"); |
|
902 TEST (T, -12L, dec, 0, 0, ' ', "", "%ld"); |
|
903 std_log(LOG_FILENAME_LINE,"Test end"); |
|
904 std_log(LOG_FILENAME_LINE,"Test start"); |
|
905 TEST (T, -345L, dec, 0, 0, ' ', "", "%ld"); |
|
906 std_log(LOG_FILENAME_LINE,"Test end"); |
|
907 std_log(LOG_FILENAME_LINE,"Test start"); |
|
908 TEST (T, -6789L, dec, 0, 0, ' ', "", "%ld"); |
|
909 std_log(LOG_FILENAME_LINE,"Test end"); |
|
910 std_log(LOG_FILENAME_LINE,"Test start"); |
|
911 TEST (T, -98765L, dec, 0, 0, ' ', "", "%ld"); |
|
912 std_log(LOG_FILENAME_LINE,"Test end"); |
|
913 std_log(LOG_FILENAME_LINE,"Test start"); |
|
914 TEST (T, LONG_MIN, dec, 0, 0, ' ', "", "%ld"); |
|
915 std_log(LOG_FILENAME_LINE,"Test end"); |
|
916 |
|
917 |
|
918 rw_info (0, 0, __LINE__, "std::ios::dec | std::ios::showbase"); |
|
919 std_log(LOG_FILENAME_LINE,"Test end"); |
|
920 std_log(LOG_FILENAME_LINE,"Test start"); |
|
921 |
|
922 TEST (T, 0L, dec | showbase, 0, 0, ' ', "", "%#ld"); |
|
923 std_log(LOG_FILENAME_LINE,"Test end"); |
|
924 std_log(LOG_FILENAME_LINE,"Test start"); |
|
925 TEST (T, 1234L, dec | showbase, 0, 0, ' ', "", "%#ld"); |
|
926 std_log(LOG_FILENAME_LINE,"Test end"); |
|
927 std_log(LOG_FILENAME_LINE,"Test start"); |
|
928 TEST (T, -1235L, dec | showbase, 0, 0, ' ', "", "%#ld"); |
|
929 std_log(LOG_FILENAME_LINE,"Test end"); |
|
930 std_log(LOG_FILENAME_LINE,"Test start"); |
|
931 TEST (T, LONG_MAX, dec | showbase, 0, 0, ' ', "", "%#ld"); |
|
932 std_log(LOG_FILENAME_LINE,"Test end"); |
|
933 std_log(LOG_FILENAME_LINE,"Test start"); |
|
934 TEST (T, LONG_MIN, dec | showbase, 0, 0, ' ', "", "%#ld"); |
|
935 std_log(LOG_FILENAME_LINE,"Test end"); |
|
936 |
|
937 |
|
938 rw_info (0, 0, __LINE__, "std::ios::dec | std::ios::showpos"); |
|
939 |
|
940 std_log(LOG_FILENAME_LINE,"Test start"); |
|
941 |
|
942 TEST (T, 0L, dec | showpos, 0, 0, ' ', "", "%+ld"); |
|
943 std_log(LOG_FILENAME_LINE,"Test end"); |
|
944 std_log(LOG_FILENAME_LINE,"Test start"); |
|
945 TEST (T, 1236L, dec | showpos, 0, 0, ' ', "", "%+ld"); |
|
946 std_log(LOG_FILENAME_LINE,"Test end"); |
|
947 std_log(LOG_FILENAME_LINE,"Test start"); |
|
948 TEST (T, -1237L, dec | showpos, 0, 0, ' ', "", "%+ld"); |
|
949 std_log(LOG_FILENAME_LINE,"Test end"); |
|
950 std_log(LOG_FILENAME_LINE,"Test start"); |
|
951 TEST (T, LONG_MAX, dec | showpos, 0, 0, ' ', "", "%+ld"); |
|
952 std_log(LOG_FILENAME_LINE,"Test end"); |
|
953 std_log(LOG_FILENAME_LINE,"Test start"); |
|
954 TEST (T, LONG_MIN, dec | showpos, 0, 0, ' ', "", "%+ld"); |
|
955 std_log(LOG_FILENAME_LINE,"Test end"); |
|
956 |
|
957 |
|
958 rw_info (0, 0, __LINE__, |
|
959 "std::ios::dec | std::ios::showbase | std::ios::showpos"); |
|
960 |
|
961 std_log(LOG_FILENAME_LINE,"Test start"); |
|
962 |
|
963 TEST (T, 0L, dec | showbase | showpos, 0, 0, ' ', "", "%#+ld"); |
|
964 std_log(LOG_FILENAME_LINE,"Test end"); |
|
965 std_log(LOG_FILENAME_LINE,"Test start"); |
|
966 TEST (T, 1238L, dec | showbase | showpos, 0, 0, ' ', "", "%#+ld"); |
|
967 std_log(LOG_FILENAME_LINE,"Test end"); |
|
968 std_log(LOG_FILENAME_LINE,"Test start"); |
|
969 TEST (T, -1239L, dec | showbase | showpos, 0, 0, ' ', "", "%#+ld"); |
|
970 std_log(LOG_FILENAME_LINE,"Test end"); |
|
971 std_log(LOG_FILENAME_LINE,"Test start"); |
|
972 TEST (T, LONG_MAX, dec | showbase | showpos, 0, 0, ' ', "", "%#+ld"); |
|
973 std_log(LOG_FILENAME_LINE,"Test end"); |
|
974 std_log(LOG_FILENAME_LINE,"Test start"); |
|
975 TEST (T, LONG_MIN, dec | showbase | showpos, 0, 0, ' ', "", "%#+ld"); |
|
976 std_log(LOG_FILENAME_LINE,"Test end"); |
|
977 std_log(LOG_FILENAME_LINE,"Test start"); |
|
978 |
|
979 // left justfication |
|
980 rw_info (0, 0, __LINE__, "std::ios::dec | std::ios::left"); |
|
981 |
|
982 TEST (T, 0L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
983 std_log(LOG_FILENAME_LINE,"Test end"); |
|
984 std_log(LOG_FILENAME_LINE,"Test start"); |
|
985 TEST (T, 1L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
986 std_log(LOG_FILENAME_LINE,"Test end"); |
|
987 std_log(LOG_FILENAME_LINE,"Test start"); |
|
988 TEST (T, 12L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
989 std_log(LOG_FILENAME_LINE,"Test end"); |
|
990 std_log(LOG_FILENAME_LINE,"Test start"); |
|
991 TEST (T, 123L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
992 std_log(LOG_FILENAME_LINE,"Test end"); |
|
993 std_log(LOG_FILENAME_LINE,"Test start"); |
|
994 TEST (T, 1234L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
995 std_log(LOG_FILENAME_LINE,"Test end"); |
|
996 std_log(LOG_FILENAME_LINE,"Test start"); |
|
997 TEST (T, 12345L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
998 std_log(LOG_FILENAME_LINE,"Test end"); |
|
999 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1000 TEST (T, 123456L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
1001 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1002 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1003 TEST (T, 1234567L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
1004 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1005 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1006 TEST (T, 12345678L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
1007 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1008 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1009 TEST (T, 123456789L, dec | left, 0, 10, ' ', "", "%-10ld"); |
|
1010 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1011 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1012 |
|
1013 // left justfication, signed dec |
|
1014 TEST (T, -1L, dec | left, 0, 10, ' ', "", "-1 "); |
|
1015 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1016 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1017 TEST (T, -12L, dec | left, 0, 10, ' ', "", "-12 "); |
|
1018 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1019 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1020 TEST (T, -123L, dec | left, 0, 10, ' ', "", "-123 "); |
|
1021 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1022 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1023 TEST (T, -1234L, dec | left, 0, 10, ' ', "", "-1234 "); |
|
1024 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1025 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1026 TEST (T, -12345L, dec | left, 0, 10, ' ', "", "-12345 "); |
|
1027 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1028 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1029 TEST (T, -123456L, dec | left, 0, 10, ' ', "", "-123456 "); |
|
1030 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1031 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1032 TEST (T, -1234567L, dec | left, 0, 10, ' ', "", "-1234567 "); |
|
1033 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1034 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1035 TEST (T, -12345678L, dec | left, 0, 10, ' ', "", "-12345678 "); |
|
1036 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1037 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1038 TEST (T, -123456789L, dec | left, 0, 10, ' ', "", "-123456789"); |
|
1039 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1040 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1041 |
|
1042 // left justification with fill char |
|
1043 TEST (T, -1L, dec | left, 0, 10, '#', "", "-1########"); |
|
1044 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1045 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1046 TEST (T, -12L, dec | left, 0, 10, '@', "", "-12@@@@@@@"); |
|
1047 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1048 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1049 TEST (T, -123L, dec | left, 0, 10, '*', "", "-123******"); |
|
1050 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1051 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1052 TEST (T, -1234L, dec | left, 0, 10, '=', "", "-1234====="); |
|
1053 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1054 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1055 TEST (T, -12345L, dec | left, 0, 10, '.', "", "-12345...."); |
|
1056 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1057 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1058 TEST (T, -123456L, dec | left, 0, 10, ',', "", "-123456,,,"); |
|
1059 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1060 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1061 TEST (T, -1234567L, dec | left, 0, 10, '-', "", "-1234567--"); |
|
1062 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1063 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1064 TEST (T, -12345678L, dec | left, 0, 10, '+', "", "-12345678+"); |
|
1065 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1066 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1067 TEST (T, -123456789L, dec | left, 0, 10, ';', "", "-123456789"); |
|
1068 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1069 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1070 |
|
1071 // left justfication with grouping |
|
1072 TEST (T, 1L, dec | left, 0, 14, ' ', "\2", "1 "); |
|
1073 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1074 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1075 TEST (T, 12L, dec | left, 0, 14, ' ', "\2", "12 "); |
|
1076 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1077 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1078 TEST (T, 123L, dec | left, 0, 14, ' ', "\2", "1,23 "); |
|
1079 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1080 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1081 TEST (T, 1234L, dec | left, 0, 14, ' ', "\2", "12,34 "); |
|
1082 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1083 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1084 TEST (T, 12345L, dec | left, 0, 14, ' ', "\2", "1,23,45 "); |
|
1085 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1086 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1087 TEST (T, 123456L, dec | left, 0, 14, ' ', "\2", "12,34,56 "); |
|
1088 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1089 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1090 TEST (T, 1234567L, dec | left, 0, 14, ' ', "\2", "1,23,45,67 "); |
|
1091 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1092 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1093 TEST (T, 12345678L, dec | left, 0, 14, ' ', "\2", "12,34,56,78 "); |
|
1094 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1095 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1096 TEST (T, 123456789L, dec | left, 0, 14, ' ', "\2", "1,23,45,67,89 "); |
|
1097 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1098 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1099 TEST (T, 123456789L, dec | left, 0, 14, ',', "\2", "1,23,45,67,89,"); |
|
1100 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1101 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1102 |
|
1103 TEST (T, 1L, dec | left, 0, 14, ' ', "\2\1\3", "1 "); |
|
1104 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1105 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1106 TEST (T, 12L, dec | left, 0, 14, ' ', "\2\1\3", "12 "); |
|
1107 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1108 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1109 TEST (T, 123L, dec | left, 0, 14, ' ', "\2\1\3", "1,23 "); |
|
1110 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1111 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1112 TEST (T, 1234L, dec | left, 0, 14, ' ', "\2\1\3", "1,2,34 "); |
|
1113 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1114 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1115 TEST (T, 12345L, dec | left, 0, 14, ' ', "\2\1\3", "12,3,45 "); |
|
1116 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1117 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1118 TEST (T, 123456L, dec | left, 0, 14, ' ', "\2\1\3", "123,4,56 "); |
|
1119 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1120 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1121 TEST (T, 1234567L, dec | left, 0, 14, ' ', "\2\1\3", "1,234,5,67 "); |
|
1122 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1123 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1124 TEST (T, 12345678L, dec | left, 0, 14, ' ', "\2\1\3", "12,345,6,78 "); |
|
1125 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1126 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1127 TEST (T, 123456789L, dec | left, 0, 14, ' ', "\2\1\3", "123,456,7,89 "); |
|
1128 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1129 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1130 TEST (T, 123456789L, dec | left, 0, 14, '0', "\2\1\3", "123,456,7,8900"); |
|
1131 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1132 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1133 |
|
1134 TEST (T, -1L, dec | left, 0, 14, ' ', "\1\2\3", "-1 "); |
|
1135 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1136 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1137 TEST (T, -12L, dec | left, 0, 14, ' ', "\1\2\3", "-1,2 "); |
|
1138 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1139 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1140 TEST (T, -123L, dec | left, 0, 14, ' ', "\1\2\3", "-12,3 "); |
|
1141 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1142 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1143 TEST (T, -1234L, dec | left, 0, 14, ' ', "\1\2\3", "-1,23,4 "); |
|
1144 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1145 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1146 TEST (T, -12345L, dec | left, 0, 14, ' ', "\1\2\3", "-12,34,5 "); |
|
1147 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1148 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1149 TEST (T, -123456L, dec | left, 0, 14, ' ', "\1\2\3", "-123,45,6 "); |
|
1150 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1151 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1152 TEST (T, -1234567L, dec | left, 0, 14, ' ', "\1\2\3", "-1,234,56,7 "); |
|
1153 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1154 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1155 TEST (T, -12345678L, dec | left, 0, 14, ' ', "\1\2\3", "-12,345,67,8 "); |
|
1156 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1157 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1158 TEST (T, -123456789L, dec | left, 0, 14, ' ', "\1\2\3", "-123,456,78,9 "); |
|
1159 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1160 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1161 TEST (T, -123456789L, dec | left, 0, 14, ' ', "\3\1\2", "-1,23,45,6,789"); |
|
1162 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1163 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1164 |
|
1165 TEST (T, -123456780L, dec | left, 0, 14, ' ', "\x1", "-1,2,3,4,5,6,7,8,0"); |
|
1166 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1167 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1168 |
|
1169 TEST (T, -123456781L, dec | left, 0, 14, ' ', "\x2", "-1,23,45,67,81"); |
|
1170 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1171 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1172 TEST (T, -123456782L, dec | left, 0, 14, ' ', "\x3", "-123,456,782 "); |
|
1173 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1174 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1175 TEST (T, -123456783L, dec | left, 0, 14, ' ', "\x4", "-1,2345,6783 "); |
|
1176 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1177 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1178 TEST (T, -123456784L, dec | left, 0, 14, ' ', "\x5", "-1234,56784 "); |
|
1179 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1180 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1181 TEST (T, -123456785L, dec | left, 0, 14, ' ', "\x6", "-123,456785 "); |
|
1182 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1183 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1184 TEST (T, -123456786L, dec | left, 0, 14, ' ', "\x7", "-12,3456786 "); |
|
1185 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1186 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1187 TEST (T, -123456787L, dec | left, 0, 14, ' ', "\x8", "-1,23456787 "); |
|
1188 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1189 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1190 TEST (T, -123456788L, dec | left, 0, 14, ' ', "\x9", "-123456788 "); |
|
1191 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1192 |
|
1193 |
|
1194 #ifndef _RWSTD_NO_EXT_BIN_IO |
|
1195 |
|
1196 rw_info (0, 0, __LINE__, "std::ios::dec | std::ios::bin [extension]"); |
|
1197 |
|
1198 TEST (T, 33333333L, bin | dec, 0, 0, ' ', "", "%ld"); |
|
1199 |
|
1200 #endif // _RWSTD_NO_EXT_BIN_IO |
|
1201 |
|
1202 ////////////////////////////////////////////////////////////////// |
|
1203 // explicit octal ouptut |
|
1204 rw_info (0, 0, __LINE__, "std::ios::oct"); |
|
1205 |
|
1206 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1207 |
|
1208 TEST (T, 0L, oct, 0, 0, ' ', "", "%lo"); |
|
1209 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1210 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1211 TEST (T, 1L, oct, 0, 0, ' ', "", "%lo"); |
|
1212 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1213 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1214 TEST (T, 2L, oct, 0, 0, ' ', "", "%lo"); |
|
1215 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1216 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1217 TEST (T, 12L, oct, 0, 0, ' ', "", "%lo"); |
|
1218 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1219 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1220 TEST (T, 345L, oct, 0, 0, ' ', "", "%lo"); |
|
1221 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1222 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1223 TEST (T, 6789L, oct, 0, 0, ' ', "", "%lo"); |
|
1224 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1225 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1226 TEST (T, 98765L, oct, 0, 0, ' ', "", "%lo"); |
|
1227 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1228 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1229 TEST (T, LONG_MAX, oct, 0, 0, ' ', "", "%lo"); |
|
1230 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1231 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1232 |
|
1233 TEST (T, LONG_MAX - 1, oct, 0, 0, ' ', "", "%lo"); |
|
1234 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1235 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1236 |
|
1237 // negative values formatted as oct cause overflow on input (lwg issue 23) |
|
1238 TEST (T, ~0L, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1239 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1240 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1241 TEST (T, -1L, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1242 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1243 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1244 TEST (T, -2L, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1245 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1246 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1247 TEST (T, -12L, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1248 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1249 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1250 TEST (T, -345L, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1251 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1252 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1253 TEST (T, -6789L, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1254 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1255 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1256 TEST (T, -98765L, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1257 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1258 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1259 TEST (T, LONG_MIN, oct, 0, 0, ' ', "", "%lo", GET_FAIL); |
|
1260 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1261 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1262 |
|
1263 rw_info (0, 0, __LINE__, "std::ios::oct | std::ios::dec"); |
|
1264 |
|
1265 TEST (T, 13579L, oct | dec, 0, 0, ' ', "", "%ld"); |
|
1266 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1267 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1268 |
|
1269 rw_info (0, 0, __LINE__, "std::ios::oct | std::ios::showbase"); |
|
1270 |
|
1271 TEST (T, 0L, oct | showbase, 0, 0, ' ', "", "%#lo"); |
|
1272 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1273 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1274 TEST (T, 2345L, oct | showbase, 0, 0, ' ', "", "%#lo"); |
|
1275 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1276 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1277 TEST (T, -2346L, oct | showbase, 0, 0, ' ', "", "%#lo", GET_FAIL); |
|
1278 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1279 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1280 TEST (T, LONG_MAX, oct | showbase, 0, 0, ' ', "", "%#+lo"); |
|
1281 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1282 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1283 TEST (T, LONG_MIN, oct | showbase, 0, 0, ' ', "", "%#+lo", GET_FAIL); |
|
1284 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1285 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1286 |
|
1287 rw_info (0, 0, __LINE__, "std::ios::oct | std::ios::showpos"); |
|
1288 |
|
1289 TEST (T, 0L, oct | showpos, 0, 0, ' ', "", "%+lo"); |
|
1290 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1291 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1292 TEST (T, 2347L, oct | showpos, 0, 0, ' ', "", "%+lo"); |
|
1293 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1294 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1295 TEST (T, -2348L, oct | showpos, 0, 0, ' ', "", "%+lo", GET_FAIL); |
|
1296 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1297 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1298 |
|
1299 TEST (T, LONG_MAX, oct | showpos, 0, 0, ' ', "", "%+lo"); |
|
1300 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1301 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1302 TEST (T, LONG_MIN, oct | showpos, 0, 0, ' ', "", "%+lo", GET_FAIL); |
|
1303 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1304 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1305 |
|
1306 rw_info (0, 0, __LINE__, |
|
1307 "std::ios::oct | std::ios::showbase | std::ios::showpos"); |
|
1308 |
|
1309 TEST (T, 0L, oct | showbase | showpos, 0, 0, ' ', "", "%#+lo"); |
|
1310 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1311 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1312 TEST (T, 2349L, oct | showbase | showpos, 0, 0, ' ', "", "%#+lo"); |
|
1313 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1314 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1315 TEST (T, -2350L, oct | showbase | showpos, 0, 0, ' ', "", "%#+lo", |
|
1316 GET_FAIL); |
|
1317 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1318 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1319 |
|
1320 TEST (T, LONG_MAX, oct | showbase | showpos, 0, 0, ' ', "", "%#+lo"); |
|
1321 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1322 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1323 TEST (T, LONG_MIN, oct | showbase | showpos, 0, 0, ' ', "", "%#+lo", |
|
1324 GET_FAIL); |
|
1325 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1326 |
|
1327 |
|
1328 #ifndef _RWSTD_NO_EXT_BIN_IO |
|
1329 |
|
1330 rw_info (0, 0, __LINE__, "std::ios::oct | std::ios::bin [extension]"); |
|
1331 |
|
1332 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1333 |
|
1334 TEST (T, 22222222L, bin | oct, 0, 0, ' ', "", "%ld"); |
|
1335 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1336 |
|
1337 |
|
1338 #endif // _RWSTD_NO_EXT_BIN_IO |
|
1339 |
|
1340 ////////////////////////////////////////////////////////////////// |
|
1341 // explicit hexadecimal ouptut |
|
1342 rw_info (0, 0, __LINE__, "std::ios::hex"); |
|
1343 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1344 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1345 |
|
1346 TEST (T, 0L, hex, 0, 0, ' ', "", "%lx"); |
|
1347 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1348 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1349 TEST (T, 1L, hex, 0, 0, ' ', "", "%lx"); |
|
1350 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1351 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1352 TEST (T, 2L, hex, 0, 0, ' ', "", "%lx"); |
|
1353 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1354 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1355 TEST (T, 12L, hex, 0, 0, ' ', "", "%lx"); |
|
1356 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1357 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1358 TEST (T, 345L, hex, 0, 0, ' ', "", "%lx"); |
|
1359 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1360 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1361 TEST (T, 6789L, hex, 0, 0, ' ', "", "%lx"); |
|
1362 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1363 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1364 TEST (T, 98765L, hex, 0, 0, ' ', "", "%lx"); |
|
1365 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1366 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1367 TEST (T, LONG_MAX, hex, 0, 0, ' ', "", "%lx"); |
|
1368 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1369 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1370 TEST (T, LONG_MAX - 1, hex, 0, 0, ' ', "", "%lx"); |
|
1371 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1372 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1373 TEST (T, LONG_MAX - 2, hex, 0, 0, ' ', "", "%lx"); |
|
1374 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1375 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1376 |
|
1377 // negative values formatted as hex cause overflow on input (lwg issue 23) |
|
1378 TEST (T, ~0L, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1379 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1380 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1381 TEST (T, -1L, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1382 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1383 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1384 TEST (T, -2L, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1385 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1386 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1387 TEST (T, -12L, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1388 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1389 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1390 TEST (T, -345L, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1391 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1392 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1393 TEST (T, -6789L, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1394 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1395 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1396 TEST (T, -98765L, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1397 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1398 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1399 TEST (T, LONG_MIN, hex, 0, 0, ' ', "", "%lx", GET_FAIL); |
|
1400 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1401 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1402 |
|
1403 rw_info (0, 0, __LINE__, "std::ios::hex | std::ios::uppercase"); |
|
1404 |
|
1405 TEST (T, 0L, hex | uppercase, 0, 0, ' ', "", "%lX"); |
|
1406 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1407 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1408 TEST (T, 1L, hex | uppercase, 0, 0, ' ', "", "%lX"); |
|
1409 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1410 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1411 TEST (T, 0XABCDL, hex | uppercase, 0, 0, ' ', "", "%lX"); |
|
1412 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1413 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1414 TEST (T, 0XBCDEL, hex | uppercase, 0, 0, ' ', "", "%lX"); |
|
1415 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1416 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1417 TEST (T, 0XCDEFL, hex | uppercase, 0, 0, ' ', "", "%lX"); |
|
1418 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1419 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1420 |
|
1421 rw_info (0, 0, __LINE__, "std::ios::hex | std::ios::showbase"); |
|
1422 |
|
1423 TEST (T, 0L, hex | showbase, 0, 0, ' ', "", "%#lx"); |
|
1424 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1425 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1426 TEST (T, 1L, hex | showbase, 0, 0, ' ', "", "%#lx"); |
|
1427 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1428 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1429 TEST (T, 0xdef1L, hex | showbase, 0, 0, ' ', "", "%#lx"); |
|
1430 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1431 |
|
1432 |
|
1433 rw_info (0, 0, __LINE__, |
|
1434 "std::ios::hex | std::ios::uppercase | std::ios::showbase"); |
|
1435 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1436 TEST (T, 0L, hex | uppercase | showbase, 0, 0, ' ', "", "%#lX"); |
|
1437 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1438 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1439 TEST (T, 1L, hex | uppercase | showbase, 0, 0, ' ', "", "%#lX"); |
|
1440 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1441 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1442 TEST (T, 0XEF02L, hex | uppercase | showbase, 0, 0, ' ', "", "%#lX"); |
|
1443 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1444 |
|
1445 |
|
1446 rw_info (0, 0, __LINE__, "std::ios::hex | std::ios::oct"); |
|
1447 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1448 TEST (T, 0L, oct | hex, 0, 0, ' ', "", "%ld"); |
|
1449 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1450 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1451 TEST (T, 97531L, oct | hex, 0, 0, ' ', "", "%ld"); |
|
1452 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1453 |
|
1454 |
|
1455 rw_info (0, 0, __LINE__, "std::ios::hex | std::ios::dec"); |
|
1456 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1457 TEST (T, 86420L, dec | hex, 0, 0, ' ', "", "%ld"); |
|
1458 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1459 |
|
1460 |
|
1461 rw_info (0, 0, __LINE__, "std::ios::hex | std::ios::dec | std::ios::oct"); |
|
1462 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1463 TEST (T, 11111111L, oct | dec | hex, 0, 0, ' ', "", "%ld"); |
|
1464 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1465 |
|
1466 |
|
1467 #ifndef _RWSTD_NO_EXT_BIN_IO |
|
1468 |
|
1469 rw_info (0, 0, __LINE__, "std::ios::hex | std::ios::bin [extension]"); |
|
1470 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1471 TEST (T, 44444444L, bin | hex, 0, 0, ' ', "", "%ld"); |
|
1472 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1473 rw_info (0, 0, __LINE__, "std::ios::hex | std::ios::dec | " |
|
1474 "std::ios::oct | std::ios::bin [extension]"); |
|
1475 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1476 TEST (T, 55555555L, bin | oct | dec | hex, 0, 0, ' ', "", "%ld"); |
|
1477 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1478 #endif // _RWSTD_NO_EXT_BIN_IO |
|
1479 |
|
1480 |
|
1481 ////////////////////////////////////////////////////////////////// |
|
1482 // extension: fixed and negative precision |
|
1483 |
|
1484 rw_info (0, 0, __LINE__, |
|
1485 "std::ios::fixed with negative precision [extension]"); |
|
1486 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1487 TEST (T, 987654321L, 0, -1, 0, ' ', "", "987654321"); |
|
1488 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1489 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1490 TEST (T, 987654322L, fixed, 0, 0, ' ', "", "987654322"); |
|
1491 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1492 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1493 TEST (T, 987654323L, fixed, -1, 0, ' ', "", "98765432*3"); |
|
1494 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1495 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1496 TEST (T, -987654323L, fixed, -1, 0, ' ', "", "-98765432*3"); |
|
1497 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1498 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1499 TEST (T, 987654324L, fixed, -2, 0, ' ', "", "9876543*24"); |
|
1500 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1501 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1502 TEST (T, -987654324L, fixed, -2, 0, ' ', "", "-9876543*24"); |
|
1503 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1504 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1505 TEST (T, 987654325L, fixed, -3, 0, ' ', "", "987654*325"); |
|
1506 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1507 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1508 TEST (T, -987654325L, fixed, -3, 0, ' ', "", "-987654*325"); |
|
1509 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1510 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1511 TEST (T, 987654326L, fixed, -4, 0, ' ', "", "98765*4326"); |
|
1512 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1513 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1514 TEST (T, -987654326L, fixed, -4, 0, ' ', "", "-98765*4326"); |
|
1515 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1516 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1517 TEST (T, 987654327L, fixed, -5, 0, ' ', "", "9876*54327"); |
|
1518 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1519 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1520 TEST (T, -987654327L, fixed, -5, 0, ' ', "", "-9876*54327"); |
|
1521 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1522 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1523 TEST (T, 987654328L, fixed, -6, 0, ' ', "", "987*654328"); |
|
1524 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1525 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1526 TEST (T, -987654328L, fixed, -6, 0, ' ', "", "-987*654328"); |
|
1527 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1528 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1529 TEST (T, 987654329L, fixed, -7, 0, ' ', "", "98*7654329"); |
|
1530 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1531 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1532 TEST (T, -987654329L, fixed, -7, 0, ' ', "", "-98*7654329"); |
|
1533 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1534 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1535 TEST (T, 987654330L, fixed, -8, 0, ' ', "", "9*87654330"); |
|
1536 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1537 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1538 TEST (T, -987654330L, fixed, -8, 0, ' ', "", "-9*87654330"); |
|
1539 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1540 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1541 TEST (T, 987654331L, fixed, -9, 0, ' ', "", "0*987654331"); |
|
1542 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1543 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1544 TEST (T, -987654331L, fixed, -9, 0, ' ', "", "-0*987654331"); |
|
1545 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1546 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1547 TEST (T, 987654332L, fixed, -10, 0, ' ', "", "0*0987654332"); |
|
1548 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1549 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1550 TEST (T, -987654332L, fixed, -10, 0, ' ', "", "-0*0987654332"); |
|
1551 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1552 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1553 TEST (T, 987654333L, fixed, -11, 0, ' ', "", "0*00987654333"); |
|
1554 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1555 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1556 TEST (T, -987654333L, fixed, -11, 0, ' ', "", "-0*00987654333"); |
|
1557 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1558 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1559 TEST (T, 0L, fixed, -12, 0, ' ', "", "0*000000000000"); |
|
1560 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1561 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1562 |
|
1563 ////////////////////////////////////////////////////////////////// |
|
1564 |
|
1565 // second group is the last group (i.e., prevent repetition) |
|
1566 #if CHAR_MAX == UCHAR_MAX |
|
1567 # define GROUPING "\2\1\xff" |
|
1568 #else |
|
1569 # define GROUPING "\2\1\x7f" |
|
1570 #endif |
|
1571 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1572 TEST (T, 123456789L, dec | left, 0, 0, ' ', GROUPING, "123456,7,89"); |
|
1573 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1574 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1575 TEST (T, -123456789L, dec | left, 0, 0, ' ', GROUPING, "-123456,7,89"); |
|
1576 |
|
1577 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1578 |
|
1579 #undef GROUPING |
|
1580 |
|
1581 #if CHAR_MAX == UCHAR_MAX |
|
1582 # define GROUPING "\2\3\xff" |
|
1583 #else |
|
1584 # define GROUPING "\2\3\x7f" |
|
1585 #endif |
|
1586 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1587 TEST (T, 123456789L, dec | left, 0, 0, ' ', GROUPING, "1234,567,89"); |
|
1588 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1589 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1590 TEST (T, -123456789L, dec | left, 0, 0, ' ', GROUPING, "-1234,567,89"); |
|
1591 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1592 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1593 |
|
1594 TEST (T, 0x12345678L, hex | showbase, 0, 0, ' ', GROUPING, "0x123,456,78"); |
|
1595 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1596 |
|
1597 |
|
1598 ////////////////////////////////////////////////////////////////// |
|
1599 // right justfication |
|
1600 rw_info (0, 0, __LINE__, "std::ios::right"); |
|
1601 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1602 TEST (T, 1L, dec | right, 0, 10, ' ', "", " 1"); |
|
1603 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1604 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1605 TEST (T, 12L, dec | right, 0, 10, ' ', "", " 12"); |
|
1606 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1607 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1608 TEST (T, 123L, dec | right, 0, 10, ' ', "", " 123"); |
|
1609 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1610 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1611 TEST (T, 1234L, dec | right, 0, 10, ' ', "", " 1234"); |
|
1612 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1613 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1614 TEST (T, 12345L, dec | right, 0, 10, ' ', "", " 12345"); |
|
1615 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1616 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1617 TEST (T, 123456L, dec | right, 0, 10, ' ', "", " 123456"); |
|
1618 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1619 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1620 TEST (T, 1234567L, dec | right, 0, 10, ' ', "", " 1234567"); |
|
1621 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1622 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1623 TEST (T, 12345678L, dec | right, 0, 10, ' ', "", " 12345678"); |
|
1624 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1625 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1626 TEST (T, 123456789L, dec | right, 0, 10, ' ', "", " 123456789"); |
|
1627 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1628 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1629 TEST (T, 123456789L, dec | right, 0, 10, '0', "", "0123456789"); |
|
1630 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1631 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1632 TEST (T, 123456789L, dec | right, 0, 10, '+', "", "+123456789"); |
|
1633 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1634 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1635 TEST (T, 123456789L, dec | right, 0, 10, '-', "", "-123456789"); |
|
1636 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1637 |
|
1638 |
|
1639 // right justification, oct |
|
1640 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1641 TEST (T, 0L, oct | right, 0, 10, ' ', "", " 0"); |
|
1642 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1643 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1644 TEST (T, 01L, oct | right, 0, 10, ' ', "", " 1"); |
|
1645 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1646 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1647 TEST (T, 012L, oct | right, 0, 10, ' ', "", " 12"); |
|
1648 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1649 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1650 TEST (T, 0123L, oct | right, 0, 10, ' ', "", " 123"); |
|
1651 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1652 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1653 TEST (T, 01234L, oct | right, 0, 10, ' ', "", " 1234"); |
|
1654 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1655 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1656 TEST (T, 012345L, oct | right, 0, 10, ' ', "", " 12345"); |
|
1657 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1658 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1659 TEST (T, 0123456L, oct | right, 0, 10, ' ', "", " 123456"); |
|
1660 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1661 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1662 TEST (T, 01234567L, oct | right, 0, 10, ' ', "", " 1234567"); |
|
1663 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1664 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1665 TEST (T, 012345670L, oct | right, 0, 10, ' ', "", " 12345670"); |
|
1666 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1667 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1668 TEST (T, 012345670L, oct | right, 0, 10, '1', "", "1112345670"); |
|
1669 |
|
1670 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1671 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1672 // right justification with grouping |
|
1673 TEST (T, 0L, oct | right, 0, 10, ' ', "\2", " 0"); |
|
1674 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1675 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1676 TEST (T, 01L, oct | right, 0, 10, ' ', "\2", " 1"); |
|
1677 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1678 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1679 TEST (T, 012L, oct | right, 0, 10, ' ', "\2", " 12"); |
|
1680 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1681 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1682 TEST (T, 0123L, oct | right, 0, 10, ' ', "\2", " 1,23"); |
|
1683 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1684 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1685 TEST (T, 01234L, oct | right, 0, 10, ' ', "\2", " 12,34"); |
|
1686 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1687 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1688 TEST (T, 012345L, oct | right, 0, 10, ' ', "\2", " 1,23,45"); |
|
1689 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1690 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1691 TEST (T, 0123456L, oct | right, 0, 10, ' ', "\2", " 12,34,56"); |
|
1692 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1693 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1694 TEST (T, 01234567L, oct | right, 0, 10, ' ', "\2", "1,23,45,67"); |
|
1695 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1696 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1697 TEST (T, 012345670L, oct | right, 0, 10, ' ', "\2", "12,34,56,70"); |
|
1698 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1699 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1700 |
|
1701 #undef FLAGS |
|
1702 #define flags hex | showbase | internal |
|
1703 #define FLAGS flags | uppercase |
|
1704 |
|
1705 // internal justfication, hex |
|
1706 rw_info (0, 0, __LINE__, "std::ios::internal"); |
|
1707 TEST (T, 0X1L, FLAGS, 0, 10, ' ', "", "0X 1"); |
|
1708 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1709 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1710 TEST (T, 0x12L, flags, 0, 10, ' ', "", "0x 12"); |
|
1711 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1712 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1713 TEST (T, 0X123L, FLAGS, 0, 10, ' ', "", "0X 123"); |
|
1714 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1715 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1716 TEST (T, 0x1234L, flags, 0, 10, ' ', "", "0x 1234"); |
|
1717 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1718 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1719 TEST (T, 0X12345L, FLAGS, 0, 10, ' ', "", "0X 12345"); |
|
1720 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1721 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1722 TEST (T, 0x123abcL, flags, 0, 10, ' ', "", "0x 123abc"); |
|
1723 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1724 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1725 TEST (T, 0x123abcL, flags, 0, 10, '0', "", "0x00123abc"); |
|
1726 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1727 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1728 TEST (T, 0X1234ABCL, FLAGS, 0, 10, ' ', "", "0X 1234ABC"); |
|
1729 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1730 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1731 TEST (T, 0X12345678L, FLAGS, 0, 10, ' ', "", "0X12345678"); |
|
1732 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1733 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1734 TEST (T, 0X12345678L, FLAGS, 0, 10, '0', "", "0X12345678"); |
|
1735 |
|
1736 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1737 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1738 // internal justfication, hex, grouping |
|
1739 TEST (T, 0X1L, FLAGS, 0, 10, ' ', "\1\2", "0X 1"); |
|
1740 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1741 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1742 TEST (T, 0x12L, flags, 0, 10, ' ', "\1\2", "0x 1,2"); |
|
1743 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1744 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1745 TEST (T, 0X123L, FLAGS, 0, 10, ' ', "\1\2", "0X 12,3"); |
|
1746 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1747 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1748 TEST (T, 0x1234L, flags, 0, 10, ' ', "\1\2", "0x 1,23,4"); |
|
1749 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1750 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1751 TEST (T, 0X12345L, FLAGS, 0, 10, ' ', "\1\2", "0X 12,34,5"); |
|
1752 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1753 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1754 TEST (T, 0X12345L, FLAGS, 0, 10, ',', "\1\2", "0X,12,34,5"); |
|
1755 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1756 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1757 TEST (T, 0x123abcL, flags, 0, 10, ' ', "\1\2", "0x1,23,ab,c"); |
|
1758 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1759 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1760 TEST (T, 0X1234ABCL, FLAGS, 0, 10, ' ', "\1\2", "0X12,34,AB,C"); |
|
1761 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1762 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1763 TEST (T, 0X12345678L, FLAGS, 0, 10, ' ', "\1\2", "0X1,23,45,67,8"); |
|
1764 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1765 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1766 TEST (T, 0X12345678L, FLAGS, 0, 10, '0', "\1\2", "0X1,23,45,67,8"); |
|
1767 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1768 |
|
1769 |
|
1770 #undef flags |
|
1771 #undef FLAGS |
|
1772 #define FLAGS dec | showpos | internal |
|
1773 |
|
1774 // internal justfication, signed dec |
|
1775 |
|
1776 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1777 TEST (T, 0L, FLAGS, 0, 10, ' ', "", "+ 0"); |
|
1778 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1779 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1780 TEST (T, -1L, FLAGS, 0, 10, ' ', "", "- 1"); |
|
1781 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1782 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1783 TEST (T, +12L, FLAGS, 0, 10, ' ', "", "+ 12"); |
|
1784 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1785 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1786 TEST (T, -123L, FLAGS, 0, 10, ' ', "", "- 123"); |
|
1787 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1788 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1789 TEST (T, +1234L, FLAGS, 0, 10, ' ', "", "+ 1234"); |
|
1790 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1791 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1792 TEST (T, -12345L, FLAGS, 0, 10, ' ', "", "- 12345"); |
|
1793 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1794 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1795 TEST (T, +123456L, FLAGS, 0, 10, ' ', "", "+ 123456"); |
|
1796 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1797 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1798 TEST (T, -1234567L, FLAGS, 0, 10, ' ', "", "- 1234567"); |
|
1799 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1800 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1801 TEST (T, +12345678L, FLAGS, 0, 10, ' ', "", "+ 12345678"); |
|
1802 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1803 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1804 TEST (T, -123456789L, FLAGS, 0, 10, '0', "", "-123456789"); |
|
1805 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1806 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1807 |
|
1808 TEST (T, +1L, FLAGS, 0, 10, '-', "", "+--------1"); |
|
1809 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1810 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1811 TEST (T, -12L, FLAGS, 0, 10, '-', "", "--------12"); |
|
1812 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1813 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1814 TEST (T, +123L, FLAGS, 0, 10, '+', "", "+++++++123"); |
|
1815 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1816 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1817 TEST (T, -1234L, FLAGS, 0, 10, '+', "", "-+++++1234"); |
|
1818 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1819 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1820 TEST (T, +12345L, FLAGS, 0, 10, '0', "", "+000012345"); |
|
1821 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1822 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1823 TEST (T, -123456L, FLAGS, 0, 10, '1', "", "-111123456"); |
|
1824 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1825 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1826 TEST (T, +1234567L, FLAGS, 0, 10, '2', "", "+221234567"); |
|
1827 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1828 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1829 TEST (T, -12345678L, FLAGS, 0, 10, '3', "", "-312345678"); |
|
1830 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1831 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1832 TEST (T, +123456789L, FLAGS, 0, 10, '4', "", "+123456789"); |
|
1833 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1834 |
|
1835 |
|
1836 #ifndef _RWSTD_NO_EXT_BIN_IO |
|
1837 |
|
1838 // bin |
|
1839 rw_info (0, 0, __LINE__, "std::ios::bin [extension]"); |
|
1840 |
|
1841 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1842 |
|
1843 TEST (T, 0L, bin, 0, 16, '.', "\4", "...............0"); |
|
1844 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1845 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1846 TEST (T, 1L, bin, 0, 16, '.', "\4", "...............1"); |
|
1847 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1848 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1849 TEST (T, 2L, bin, 0, 16, '.', "\4", "..............10"); |
|
1850 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1851 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1852 TEST (T, 3L, bin, 0, 16, '.', "\4", "..............11"); |
|
1853 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1854 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1855 TEST (T, 4L, bin, 0, 16, '.', "\4", ".............100"); |
|
1856 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1857 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1858 TEST (T, 5L, bin, 0, 16, '.', "\4", ".............101"); |
|
1859 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1860 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1861 TEST (T, 6L, bin, 0, 16, '.', "\4", ".............110"); |
|
1862 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1863 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1864 TEST (T, 7L, bin, 0, 16, '.', "\4", ".............111"); |
|
1865 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1866 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1867 TEST (T, 8L, bin, 0, 16, '.', "\4", "............1000"); |
|
1868 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1869 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1870 TEST (T, 9L, bin, 0, 16, '.', "\4", "............1001"); |
|
1871 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1872 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1873 TEST (T, 0x0aL, bin, 0, 16, '.', "\4", "............1010"); |
|
1874 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1875 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1876 TEST (T, 0x0bL, bin, 0, 16, '.', "\4", "............1011"); |
|
1877 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1878 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1879 TEST (T, 0x0cL, bin, 0, 16, '.', "\4", "............1100"); |
|
1880 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1881 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1882 TEST (T, 0x0dL, bin, 0, 16, '.', "\4", "............1101"); |
|
1883 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1884 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1885 TEST (T, 0x0eL, bin, 0, 16, '.', "\4", "............1110"); |
|
1886 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1887 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1888 TEST (T, 0x0fL, bin, 0, 16, '.', "\4", "............1111"); |
|
1889 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1890 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1891 |
|
1892 TEST (T, 0xf0L, bin, 0, 16, '.', "\4", ".......1111,0000"); |
|
1893 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1894 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1895 TEST (T, 0xf1L, bin, 0, 16, '.', "\4", ".......1111,0001"); |
|
1896 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1897 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1898 TEST (T, 0xf2L, bin, 0, 16, '.', "\4", ".......1111,0010"); |
|
1899 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1900 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1901 TEST (T, 0xf3L, bin, 0, 16, '.', "\4", ".......1111,0011"); |
|
1902 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1903 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1904 TEST (T, 0xf4L, bin, 0, 16, '.', "\4", ".......1111,0100"); |
|
1905 TEST (T, 0xf5L, bin, 0, 16, '.', "\4", ".......1111,0101"); |
|
1906 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1907 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1908 |
|
1909 TEST (T, 0x12345678L, bin, 0, 0, '.', "\4", |
|
1910 "1,0010,0011,0100,0101,0110,0111,1000"); |
|
1911 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1912 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1913 |
|
1914 TEST (T, 0xfedcba98L, bin, 0, 0, '\0', "\010", |
|
1915 "11111110,11011100,10111010,10011000"); |
|
1916 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1917 |
|
1918 #endif // _RWSTD_NO_EXT_BIN_IO |
|
1919 |
|
1920 // locale 3.0 extension |
|
1921 |
|
1922 #define BASE(n) ((n) << _RWSTD_IOS_BASEOFF) |
|
1923 |
|
1924 // bases 0 and 10 are both base 10 |
|
1925 // base 1 is roman (values 1 through 4999) |
|
1926 // bases 2 through 36 are what they are |
|
1927 // anything else is unspecified |
|
1928 |
|
1929 rw_info (0, 0, __LINE__, "base 1 (Roman), and 2 through 36 [extension]"); |
|
1930 |
|
1931 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1932 |
|
1933 TEST (T, 1234L, BASE ( 0), 0, 0, '\0', "", "1234"); |
|
1934 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1935 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1936 TEST (T, 1234L, BASE ( 1), 0, 0, '\0', "", "mccxxxiv"); |
|
1937 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1938 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1939 TEST (T, 0x1234L, BASE ( 2), 0, 0, '\0', "", "1001000110100"); |
|
1940 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1941 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1942 |
|
1943 TEST (T, 01234L, oct | BASE ( 8), 0, 0, '\0', "", "1234"); |
|
1944 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1945 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1946 TEST (T, 1234L, dec | BASE (10), 0, 0, '\0', "", "1234"); |
|
1947 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1948 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1949 TEST (T, 0x1234L, hex | BASE (16), 0, 0, '\0', "", "1234"); |
|
1950 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1951 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1952 |
|
1953 TEST (T, 1234L, BASE ( 2), 0, 0, '\0', "", "10011010010"); |
|
1954 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1955 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1956 TEST (T, 1234L, BASE ( 3), 0, 0, '\0', "", "1200201"); |
|
1957 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1958 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1959 TEST (T, 1234L, BASE ( 4), 0, 0, '\0', "", "103102"); |
|
1960 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1961 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1962 TEST (T, 1234L, BASE ( 5), 0, 0, '\0', "", "14414"); |
|
1963 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1964 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1965 TEST (T, 1234L, BASE ( 6), 0, 0, '\0', "", "5414"); |
|
1966 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1967 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1968 TEST (T, 1234L, BASE ( 7), 0, 0, '\0', "", "3412"); |
|
1969 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1970 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1971 TEST (T, 1234L, BASE ( 9), 0, 0, '\0', "", "1621"); |
|
1972 |
|
1973 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1974 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1975 TEST (T, 1234L, dec | BASE (10), 0, 0, '\0', "", "1234"); |
|
1976 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1977 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1978 |
|
1979 TEST (T, 1234L, BASE (11), 0, 0, '\0', "", "a22"); |
|
1980 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1981 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1982 TEST (T, 1234L, BASE (12), 0, 0, '\0', "", "86a"); |
|
1983 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1984 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1985 TEST (T, 1234L, BASE (13), 0, 0, '\0', "", "73c"); |
|
1986 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1987 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1988 TEST (T, 1234L, BASE (14), 0, 0, '\0', "", "642"); |
|
1989 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1990 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1991 TEST (T, 1234L, BASE (15), 0, 0, '\0', "", "574"); |
|
1992 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1993 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1994 |
|
1995 TEST (T, 1234L, hex | BASE (16), 0, 0, '\0', "", "4d2"); |
|
1996 std_log(LOG_FILENAME_LINE,"Test end"); |
|
1997 std_log(LOG_FILENAME_LINE,"Test start"); |
|
1998 |
|
1999 TEST (T, 1234L, BASE (17), 0, 0, '\0', "", "44a"); |
|
2000 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2001 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2002 TEST (T, 1234L, BASE (18), 0, 0, '\0', "", "3ea"); |
|
2003 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2004 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2005 TEST (T, 1234L, BASE (19), 0, 0, '\0', "", "37i"); |
|
2006 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2007 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2008 TEST (T, 1234L, BASE (20), 0, 0, '\0', "", "31e"); |
|
2009 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2010 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2011 TEST (T, 1234L, BASE (21), 0, 0, '\0', "", "2gg"); |
|
2012 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2013 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2014 TEST (T, 1234L, BASE (22), 0, 0, '\0', "", "2c2"); |
|
2015 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2016 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2017 TEST (T, 1234L, BASE (23), 0, 0, '\0', "", "27f"); |
|
2018 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2019 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2020 TEST (T, 1234L, BASE (24), 0, 0, '\0', "", "23a"); |
|
2021 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2022 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2023 TEST (T, 1234L, BASE (25), 0, 0, '\0', "", "1o9"); |
|
2024 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2025 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2026 TEST (T, 1234L, BASE (26), 0, 0, '\0', "", "1lc"); |
|
2027 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2028 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2029 TEST (T, 1234L, BASE (27), 0, 0, '\0', "", "1ij"); |
|
2030 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2031 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2032 TEST (T, 1234L, BASE (28), 0, 0, '\0', "", "1g2"); |
|
2033 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2034 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2035 TEST (T, 1234L, BASE (29), 0, 0, '\0', "", "1dg"); |
|
2036 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2037 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2038 TEST (T, 1234L, BASE (30), 0, 0, '\0', "", "1b4"); |
|
2039 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2040 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2041 TEST (T, 1234L, BASE (31), 0, 0, '\0', "", "18p"); |
|
2042 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2043 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2044 TEST (T, 1234L, BASE (32), 0, 0, '\0', "", "16i"); |
|
2045 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2046 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2047 TEST (T, 1234L, BASE (33), 0, 0, '\0', "", "14d"); |
|
2048 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2049 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2050 TEST (T, 1234L, BASE (34), 0, 0, '\0', "", "12a"); |
|
2051 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2052 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2053 TEST (T, 1234L, BASE (35), 0, 0, '\0', "", "109"); |
|
2054 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2055 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2056 TEST (T, 1234L, BASE (36), 0, 0, '\0', "", "ya"); |
|
2057 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2058 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2059 |
|
2060 // effect of non-empty grouping is unspecified |
|
2061 TEST (T, 0L, BASE (1), 0, 0, '\0', "", "0"); |
|
2062 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2063 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2064 TEST (T, 1L, BASE (1), 0, 0, '\0', "", "i"); |
|
2065 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2066 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2067 TEST (T, 2L, BASE (1), 0, 0, '\0', "", "ii"); |
|
2068 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2069 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2070 TEST (T, 3L, BASE (1), 0, 0, '\0', "", "iii"); |
|
2071 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2072 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2073 TEST (T, 4L, BASE (1), 0, 0, '\0', "", "iv"); |
|
2074 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2075 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2076 TEST (T, 5L, BASE (1), 0, 0, '\0', "", "v"); |
|
2077 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2078 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2079 TEST (T, 6L, BASE (1), 0, 0, '\0', "", "vi"); |
|
2080 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2081 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2082 TEST (T, 7L, BASE (1), 0, 0, '\0', "", "vii"); |
|
2083 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2084 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2085 TEST (T, 8L, BASE (1), 0, 0, '\0', "", "viii"); |
|
2086 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2087 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2088 TEST (T, 9L, BASE (1), 0, 0, '\0', "", "ix"); |
|
2089 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2090 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2091 TEST (T, 10L, BASE (1), 0, 0, '\0', "", "x"); |
|
2092 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2093 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2094 TEST (T, 50L, BASE (1), 0, 0, '\0', "", "l"); |
|
2095 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2096 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2097 TEST (T, 100L, BASE (1), 0, 0, '\0', "", "c"); |
|
2098 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2099 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2100 TEST (T, 500L, BASE (1), 0, 0, '\0', "", "d"); |
|
2101 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2102 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2103 TEST (T, 1000L, BASE (1), 0, 0, '\0', "", "m"); |
|
2104 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2105 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2106 TEST (T, 49L, BASE (1), 0, 0, '\0', "", "xlix"); |
|
2107 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2108 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2109 TEST (T, 88L, BASE (1), 0, 0, '\0', "", "lxxxviii"); |
|
2110 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2111 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2112 TEST (T, 99L, BASE (1), 0, 0, '\0', "", "xcix"); |
|
2113 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2114 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2115 TEST (T, 1999L, BASE (1), 0, 0, '\0', "", "mcmxcix"); |
|
2116 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2117 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2118 TEST (T, 2000L, BASE (1), 0, 0, '\0', "", "mm"); |
|
2119 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2120 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2121 TEST (T, 2001L, BASE (1), 0, 0, '\0', "", "mmi"); |
|
2122 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2123 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2124 TEST (T, 4999L, BASE (1), 0, 0, '\0', "", "mmmmcmxcix"); |
|
2125 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2126 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2127 TEST (T, 5000L, BASE (1), 0, 0, '\0', "", "5000"); |
|
2128 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2129 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2130 |
|
2131 TEST (T, 1492L, BASE (1), 0, 10, '*', "", "***mcdxcii"); |
|
2132 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2133 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2134 |
|
2135 TEST (T, 1776L, BASE (1) | uppercase, 0, 0, '\0', "", "MDCCLXXVI"); |
|
2136 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2137 |
|
2138 } |
|
2139 |
|
2140 |
|
2141 /**************************************************************************/ |
|
2142 |
|
2143 template <class charT> |
|
2144 void ulong_test (charT, const char *cname) |
|
2145 { |
|
2146 const char* const tname = "unsigned long"; |
|
2147 |
|
2148 rw_info (0, 0, __LINE__, "std::num_put<%s>::put (..., %s)", cname, tname); |
|
2149 |
|
2150 typedef unsigned long ULong; |
|
2151 |
|
2152 ////////////////////////////////////////////////////////////////// |
|
2153 rw_info (0, 0, __LINE__, "std::ios::dec"); |
|
2154 |
|
2155 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2156 |
|
2157 TEST (T, 0UL, dec, 0, 0, ' ', "", "%lu"); |
|
2158 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2159 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2160 TEST (T, ULong (LONG_MAX), dec, 0, 0, ' ', "", "%lu"); |
|
2161 |
|
2162 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2163 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2164 rw_info (0, 0, __LINE__, "std::ios::dec | std::ios::shopos"); |
|
2165 TEST (T, 0UL, dec | showpos, 0, 0, ' ', "", "%+lu"); |
|
2166 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2167 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2168 |
|
2169 TEST (T, 1UL, dec | showpos, 0, 0, ' ', "", "%+lu"); |
|
2170 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2171 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2172 TEST (T, ULong (LONG_MAX), dec | showpos, 0, 0, ' ', "", "%+lu"); |
|
2173 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2174 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2175 |
|
2176 ////////////////////////////////////////////////////////////////// |
|
2177 rw_info (0, 0, __LINE__, "std::ios::oct"); |
|
2178 |
|
2179 TEST (T, ULong (CHAR_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2180 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2181 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2182 TEST (T, ULong (UCHAR_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2183 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2184 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2185 TEST (T, ULong (SCHAR_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2186 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2187 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2188 TEST (T, ULong (SHRT_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2189 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2190 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2191 TEST (T, ULong (USHRT_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2192 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2193 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2194 TEST (T, ULong (INT_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2195 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2196 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2197 TEST (T, ULong (UINT_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2198 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2199 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2200 TEST (T, ULong (LONG_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2201 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2202 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2203 |
|
2204 TEST (T, ULong (CHAR_MIN), oct, 0, 0, ' ', "", "%lo"); |
|
2205 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2206 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2207 TEST (T, ULong (SCHAR_MIN), oct, 0, 0, ' ', "", "%lo"); |
|
2208 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2209 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2210 TEST (T, ULong (SHRT_MIN), oct, 0, 0, ' ', "", "%lo"); |
|
2211 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2212 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2213 TEST (T, ULong (INT_MIN), oct, 0, 0, ' ', "", "%lo"); |
|
2214 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2215 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2216 TEST (T, ULong (LONG_MIN), oct, 0, 0, ' ', "", "%lo"); |
|
2217 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2218 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2219 |
|
2220 // no overflow |
|
2221 TEST (T, 1UL, oct, 0, 0, ' ', "", "%lo"); |
|
2222 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2223 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2224 TEST (T, ~0UL, oct, 0, 0, ' ', "", "%lo"); |
|
2225 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2226 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2227 TEST (T, ULong (ULONG_MAX), oct, 0, 0, ' ', "", "%lo"); |
|
2228 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2229 |
|
2230 |
|
2231 ////////////////////////////////////////////////////////////////// |
|
2232 rw_info (0, 0, __LINE__, "std::ios::hex"); |
|
2233 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2234 TEST (T, ULong (CHAR_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2235 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2236 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2237 TEST (T, ULong (UCHAR_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2238 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2239 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2240 TEST (T, ULong (SCHAR_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2241 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2242 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2243 TEST (T, ULong (SHRT_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2244 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2245 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2246 TEST (T, ULong (USHRT_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2247 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2248 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2249 TEST (T, ULong (INT_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2250 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2251 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2252 TEST (T, ULong (UINT_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2253 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2254 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2255 TEST (T, ULong (LONG_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2256 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2257 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2258 |
|
2259 TEST (T, ULong (CHAR_MIN), hex, 0, 0, ' ', "", "%lx"); |
|
2260 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2261 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2262 TEST (T, ULong (SCHAR_MIN), hex, 0, 0, ' ', "", "%lx"); |
|
2263 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2264 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2265 TEST (T, ULong (SHRT_MIN), hex, 0, 0, ' ', "", "%lx"); |
|
2266 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2267 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2268 TEST (T, ULong (INT_MIN), hex, 0, 0, ' ', "", "%lx"); |
|
2269 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2270 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2271 TEST (T, ULong (LONG_MIN), hex, 0, 0, ' ', "", "%lx"); |
|
2272 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2273 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2274 |
|
2275 TEST (T, 1UL, hex, 0, 0, ' ', "", "%lx"); |
|
2276 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2277 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2278 TEST (T, ~0UL, hex, 0, 0, ' ', "", "%lx"); |
|
2279 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2280 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2281 TEST (T, ULong (ULONG_MAX), hex, 0, 0, ' ', "", "%lx"); |
|
2282 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2283 |
|
2284 } |
|
2285 |
|
2286 |
|
2287 /**************************************************************************/ |
|
2288 |
|
2289 template <class charT> |
|
2290 void llong_test (charT, const char *cname) |
|
2291 { |
|
2292 #ifdef _RWSTD_LONG_LONG |
|
2293 |
|
2294 const char* const tname = "long long"; |
|
2295 |
|
2296 rw_info (0, 0, 0, "std::num_put<%s>::put (..., %s)", cname, tname); |
|
2297 |
|
2298 # define STDIO_FMAT "%" _RWSTD_LLONG_PRINTF_PREFIX "d" |
|
2299 |
|
2300 # ifndef _MSC_VER |
|
2301 # define LL(number) number ## LL |
|
2302 # else // if defined (_MSC_VER) |
|
2303 // MSVC 7.0 doesn't recognize the LL suffix |
|
2304 # define LL(number) number ## I64 |
|
2305 # endif // _MSC_VER |
|
2306 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2307 TEST (T, LL (0), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2308 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2309 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2310 TEST (T, LL (1), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2311 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2312 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2313 TEST (T, LL (21), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2314 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2315 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2316 TEST (T, LL (321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2317 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2318 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2319 TEST (T, LL (4321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2320 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2321 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2322 TEST (T, LL (54321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2323 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2324 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2325 TEST (T, LL (654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2326 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2327 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2328 TEST (T, LL (7654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2329 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2330 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2331 TEST (T, LL (87654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2332 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2333 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2334 TEST (T, LL (987654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2335 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2336 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2337 |
|
2338 TEST (T, ~LL (0), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2339 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2340 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2341 TEST (T, -LL (1), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2342 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2343 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2344 TEST (T, -LL (21), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2345 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2346 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2347 TEST (T, -LL (321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2348 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2349 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2350 TEST (T, -LL (4321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2351 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2352 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2353 TEST (T, -LL (54321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2354 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2355 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2356 TEST (T, -LL (654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2357 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2358 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2359 TEST (T, -LL (7654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2360 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2361 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2362 TEST (T, -LL (87654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2363 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2364 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2365 TEST (T, -LL (987654321), dec, 0, 0, ' ', "", STDIO_FMAT); |
|
2366 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2367 |
|
2368 |
|
2369 #undef FLAGS |
|
2370 #define FLAGS hex | showbase | internal |
|
2371 |
|
2372 #undef OPTS |
|
2373 #define OPTS FLAGS, 0, 20, ' ', "\1\2\3\4\1\2\3\4" |
|
2374 |
|
2375 // internal justfication, hex format, grouping |
|
2376 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2377 TEST (T, LL (0), OPTS, " 0"); |
|
2378 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2379 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2380 TEST (T, LL (0x1), OPTS, "0x 1"); |
|
2381 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2382 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2383 TEST (T, LL (0x12), OPTS, "0x 1,2"); |
|
2384 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2385 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2386 TEST (T, LL (0x123), OPTS, "0x 12,3"); |
|
2387 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2388 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2389 TEST (T, LL (0x1234), OPTS, "0x 1,23,4"); |
|
2390 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2391 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2392 TEST (T, LL (0x12345), OPTS, "0x 12,34,5"); |
|
2393 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2394 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2395 TEST (T, LL (0x123456), OPTS, "0x 123,45,6"); |
|
2396 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2397 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2398 TEST (T, LL (0x1234567), OPTS, "0x 1,234,56,7"); |
|
2399 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2400 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2401 TEST (T, LL (0x12345678), OPTS, "0x 12,345,67,8"); |
|
2402 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2403 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2404 TEST (T, LL (0x123456789), OPTS, "0x 123,456,78,9"); |
|
2405 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2406 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2407 TEST (T, LL (0x123456789a), OPTS, "0x 1234,567,89,a"); |
|
2408 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2409 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2410 TEST (T, LL (0x123456789ab), OPTS, "0x 1,2345,678,9a,b"); |
|
2411 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2412 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2413 TEST (T, LL (0x123456789abc), OPTS, "0x 1,2,3456,789,ab,c"); |
|
2414 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2415 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2416 TEST (T, LL (0x123456789abcd), OPTS, "0x12,3,4567,89a,bc,d"); |
|
2417 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2418 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2419 TEST (T, LL (0x123456789abcde), OPTS, "0x1,23,4,5678,9ab,cd,e"); |
|
2420 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2421 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2422 TEST (T, LL (0x123456789abcdef), OPTS, "0x12,34,5,6789,abc,de,f"); |
|
2423 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2424 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2425 TEST (T, LL (0x123456789abcdef0), OPTS, "0x123,45,6,789a,bcd,ef,0"); |
|
2426 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2427 |
|
2428 |
|
2429 #endif // _RWSTD_LONG_LONG |
|
2430 } |
|
2431 |
|
2432 |
|
2433 /**************************************************************************/ |
|
2434 |
|
2435 template <class charT> |
|
2436 void ullong_test (charT, const char *cname) |
|
2437 { |
|
2438 #ifdef _RWSTD_LONG_LONG |
|
2439 |
|
2440 const char* const tname = "unsigned long long"; |
|
2441 |
|
2442 rw_info (0, 0, 0, "std::num_put<%s>::put (..., %s)", cname, tname); |
|
2443 |
|
2444 #endif // _RWSTD_LONG_LONG |
|
2445 } |
|
2446 |
|
2447 |
|
2448 /**************************************************************************/ |
|
2449 |
|
2450 template <class charT> |
|
2451 void dbl_test (charT, const char *cname) |
|
2452 { |
|
2453 const char* const tname = "double"; |
|
2454 |
|
2455 rw_info (0, 0, 0, "std::num_put<%s>::put (..., %s)", cname, tname); |
|
2456 |
|
2457 Punct<charT>::decimal_point_ = '.'; |
|
2458 |
|
2459 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2460 |
|
2461 TEST (T, 0.0, 0, 0, 0, ' ', "", "%g"); |
|
2462 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2463 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2464 TEST (T, -0.0, 0, 0, 0, ' ', "", "%g"); |
|
2465 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2466 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2467 TEST (T, 1.0, 0, 0, 0, ' ', "", "%g"); |
|
2468 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2469 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2470 TEST (T, 1.0, 0, 0, 0, ' ', "", "1"); |
|
2471 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2472 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2473 TEST (T, -1.0, 0, 0, 0, ' ', "", "%g"); |
|
2474 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2475 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2476 TEST (T, -1.0, 0, 0, 0, ' ', "", "-1"); |
|
2477 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2478 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2479 TEST (T, 1.1, 0, 0, 0, ' ', "", "%g"); |
|
2480 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2481 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2482 TEST (T, 1.1, 0, 0, 0, ' ', "", "1.1"); |
|
2483 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2484 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2485 TEST (T, -1.1, 0, 0, 0, ' ', "", "%g"); |
|
2486 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2487 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2488 TEST (T, -1.1, 0, 0, 0, ' ', "", "-1.1"); |
|
2489 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2490 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2491 |
|
2492 |
|
2493 // exercise formatting of very large numbers in a fixed notation |
|
2494 // using '+' as the fill character to disable num_get tests |
|
2495 TEST (T, 1.0e+128, fixed, 0, 0, '+', "", "%.0f", Eof); |
|
2496 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2497 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2498 TEST (T, 1.0e+256, fixed, 0, 0, '+', "", "%.0f", Eof); |
|
2499 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2500 |
|
2501 |
|
2502 |
|
2503 #undef CAT |
|
2504 #undef CONCAT |
|
2505 |
|
2506 #define CAT(a, b) CONCAT (a, b) |
|
2507 #define CONCAT(a, b) a ## b |
|
2508 |
|
2509 const double d = CAT (1.0e+, _RWSTD_DBL_MAX_10_EXP); |
|
2510 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2511 TEST (T, d, fixed, 0, 0, '+', "", "%.0f", Eof); |
|
2512 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2513 |
|
2514 |
|
2515 { |
|
2516 char stdiofmt [8]; |
|
2517 const std::streamsize prec = std::streamsize (DBL_DIG + 3); |
|
2518 std::sprintf (stdiofmt, "%%.%dg", int (prec)); |
|
2519 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2520 TEST (T, DBL_MIN, 0, prec, 0, ' ', "", stdiofmt); |
|
2521 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2522 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2523 TEST (T, DBL_MAX, 0, prec, 0, ' ', "", stdiofmt); |
|
2524 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2525 |
|
2526 } |
|
2527 |
|
2528 if (1) { |
|
2529 #if 0 |
|
2530 // verify that the global LC_NUMERIC setting has no impact on the facet |
|
2531 for (const char *name = rw_locales (LC_NUMERIC, 0); *name; |
|
2532 name += std::strlen (name) + 1) { |
|
2533 |
|
2534 // find the first locale whose decimal_point character |
|
2535 // is different than in the classic C locale (i.e., than '.') |
|
2536 if (0 == std::setlocale (LC_NUMERIC, name)) |
|
2537 continue; |
|
2538 |
|
2539 const std::lconv* const conv = std::localeconv (); |
|
2540 |
|
2541 if (!conv) |
|
2542 continue; |
|
2543 |
|
2544 if (conv->decimal_point && '.' != *conv->decimal_point) |
|
2545 break; |
|
2546 } |
|
2547 #endif |
|
2548 |
|
2549 Punct<charT>::decimal_point_ = '*'; |
|
2550 Punct<charT>::thousands_sep_ = '/'; |
|
2551 |
|
2552 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2553 |
|
2554 TEST (T, 12345.678900, fixed, 6, 0, ' ', "\000", "12345*678900"); |
|
2555 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2556 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2557 TEST (T, 123456.78900, fixed, 5, 0, ' ', "\002", "12/34/56*78900"); |
|
2558 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2559 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2560 TEST (T, 1234567.8900, fixed, 4, 0, ' ', "\003", "1/234/567*8900"); |
|
2561 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2562 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2563 |
|
2564 Punct<charT>::decimal_point_ = '.'; |
|
2565 |
|
2566 TEST (T, 12345678.900, fixed, 3, 0, ' ', "\004", "1234/5678.900"); |
|
2567 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2568 |
|
2569 |
|
2570 // reset the global locale |
|
2571 std::setlocale (LC_NUMERIC, "C"); |
|
2572 } |
|
2573 } |
|
2574 |
|
2575 |
|
2576 /**************************************************************************/ |
|
2577 |
|
2578 template <class charT> |
|
2579 void ldbl_test (charT, const char *cname) |
|
2580 { |
|
2581 #ifndef _RWSTD_NO_LONG_DOUBLE |
|
2582 |
|
2583 const char* const tname = "long double"; |
|
2584 |
|
2585 rw_info (0, 0, 0, "std::num_put<%s>::put (..., %s) " |
|
2586 "[sizeof (long double) = %u]", |
|
2587 cname, tname, sizeof (long double)); |
|
2588 |
|
2589 typedef long double LDbl; |
|
2590 |
|
2591 Punct<charT>::decimal_point_ = '.'; |
|
2592 |
|
2593 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2594 TEST (T, 0.0L, 0, 0, 0, ' ', "", "%Lg"); |
|
2595 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2596 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2597 TEST (T, 1.0L, 0, 0, 0, ' ', "", "%Lg"); |
|
2598 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2599 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2600 TEST (T, 2.1L, 0, 0, 0, ' ', "", "%Lg"); |
|
2601 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2602 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2603 TEST (T, -3.2L, 0, 0, 0, ' ', "", "%Lg"); |
|
2604 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2605 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2606 TEST (T, -4.3L, 0, 0, 0, ' ', "", "%Lg"); |
|
2607 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2608 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2609 |
|
2610 TEST (T, 1.0e+10L, 0, 0, 0, ' ', "", "%Lg"); |
|
2611 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2612 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2613 TEST (T, 2.0e+20L, 0, 0, 0, ' ', "", "%Lg"); |
|
2614 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2615 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2616 TEST (T, 4.0e+30L, 0, 0, 0, ' ', "", "%Lg"); |
|
2617 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2618 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2619 |
|
2620 TEST (T, 1.0e-10L, 0, 0, 0, ' ', "", "%Lg"); |
|
2621 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2622 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2623 TEST (T, 2.0e-20L, 0, 0, 0, ' ', "", "%Lg"); |
|
2624 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2625 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2626 TEST (T, 4.0e-30L, 0, 0, 0, ' ', "", "%Lg"); |
|
2627 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2628 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2629 |
|
2630 TEST (T, LDbl (CHAR_MAX), 0, 0, 0, ' ', "", "%Lg"); |
|
2631 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2632 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2633 TEST (T, LDbl (UCHAR_MAX), 0, 0, 0, ' ', "", "%Lg"); std_log(LOG_FILENAME_LINE,"Test end"); |
|
2634 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2635 |
|
2636 TEST (T, LDbl (SCHAR_MAX), 0, 0, 0, ' ', "", "%Lg"); |
|
2637 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2638 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2639 TEST (T, LDbl (SHRT_MAX), 0, 0, 0, ' ', "", "%Lg"); |
|
2640 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2641 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2642 TEST (T, LDbl (USHRT_MAX), 0, 0, 0, ' ', "", "%Lg"); |
|
2643 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2644 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2645 |
|
2646 // specify greater precision than the default 6 for large numbers |
|
2647 TEST (T, LDbl (INT_MAX), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2648 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2649 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2650 TEST (T, LDbl (UINT_MAX), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2651 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2652 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2653 |
|
2654 TEST (T, LDbl (LONG_MAX), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2655 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2656 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2657 TEST (T, LDbl (ULONG_MAX), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2658 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2659 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2660 |
|
2661 TEST (T, LDbl (FLT_MIN), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2662 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2663 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2664 TEST (T, LDbl (FLT_MAX), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2665 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2666 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2667 TEST (T, LDbl (DBL_MIN), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2668 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2669 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2670 TEST (T, LDbl (DBL_MAX), 0, 32, 0, ' ', "", "%.32Lg"); |
|
2671 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2672 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2673 |
|
2674 { |
|
2675 char stdiofmt [8]; |
|
2676 const std::streamsize prec = std::streamsize (LDBL_DIG + 3); |
|
2677 std::sprintf (stdiofmt, "%%.%d" _RWSTD_LDBL_PRINTF_PREFIX "g", |
|
2678 int (prec)); |
|
2679 |
|
2680 TEST (T, LDbl (LDBL_MIN), 0, prec, 0, ' ', "", stdiofmt); |
|
2681 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2682 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2683 TEST (T, LDbl (LDBL_MAX), 0, prec, 0, ' ', "", stdiofmt); |
|
2684 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2685 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2686 } |
|
2687 |
|
2688 const long double Pi = 3.14159265358979323846L; |
|
2689 |
|
2690 // some test cases below that use precision in conjuction with |
|
2691 // scientific in the libc format specifier in order to exercise |
|
2692 // the proposed resolution of lwg issue 231 |
|
2693 TEST (T, Pi, 0, 32, 0, ' ', "", "%.32Lg"); |
|
2694 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2695 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2696 TEST (T, Pi, fixed, 0, 0, ' ', "", "%.0Lf", Eof, 3.0L); |
|
2697 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2698 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2699 TEST (T, Pi, scientific, 0, 0, ' ', "", "%.0Le", Eof, 3.0L); |
|
2700 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2701 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2702 TEST (T, Pi, fixed, 0, 0, ' ', "", "3", Eof, 3.0L); |
|
2703 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2704 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2705 TEST (T, Pi, scientific, 0, 0, ' ', "", "3e+00", Eof, 3.0L); |
|
2706 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2707 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2708 |
|
2709 TEST (T, Pi, uppercase, 32, 0, ' ', "", "%.32LG"); |
|
2710 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2711 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2712 TEST (T, Pi, uppercase | fixed, 0, 0, ' ', "", "%.0Lf", Eof, 3.0L); |
|
2713 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2714 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2715 TEST (T, Pi, uppercase | scientific, 0, 0, ' ', "", "%.0LE", Eof, 3.0L); |
|
2716 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2717 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2718 TEST (T, Pi, uppercase | scientific, 0, 0, ' ', "", "3E+00", Eof, 3.0L); |
|
2719 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2720 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2721 |
|
2722 #define Showpos(f) (showpos | f) |
|
2723 |
|
2724 TEST (T, Pi, Showpos (0), 32, 0, ' ', "", "%+.32Lg"); |
|
2725 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2726 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2727 TEST (T, Pi, Showpos (fixed), 0, 0, ' ', "", "%+.0Lf", Eof, 3.0L); |
|
2728 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2729 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2730 TEST (T, Pi, Showpos (scientific), 0, 0, ' ', "", "%+.0Le", Eof, 3.0L); |
|
2731 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2732 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2733 TEST (T, Pi, Showpos (fixed), 0, 0, ' ', "", "+3", Eof, 3.0L); |
|
2734 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2735 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2736 TEST (T, Pi, Showpos (scientific), 0, 0, ' ', "", "+3e+00", Eof, 3.0L); |
|
2737 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2738 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2739 |
|
2740 #define SHOWPOS(f) (showpos | uppercase | f) |
|
2741 |
|
2742 TEST (T, Pi, SHOWPOS (0), 32, 0, ' ', "", "%+.32LG"); |
|
2743 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2744 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2745 TEST (T, Pi, SHOWPOS (fixed), 0, 0, ' ', "", "%+.0Lf", Eof, 3.0L); |
|
2746 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2747 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2748 TEST (T, Pi, SHOWPOS (scientific), 0, 0, ' ', "", "%+.0LE", Eof, 3.0L); |
|
2749 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2750 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2751 TEST (T, Pi, SHOWPOS (fixed), 0, 0, ' ', "", "+3", Eof, 3.0L); |
|
2752 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2753 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2754 TEST (T, Pi, SHOWPOS (scientific), 0, 0, ' ', "", "+3E+00", Eof, 3.0L); |
|
2755 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2756 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2757 |
|
2758 #define Showpoint(f) (showpoint | f) |
|
2759 |
|
2760 TEST (T, Pi, Showpoint (0), 32, 0, ' ', "", "%#.32Lg"); |
|
2761 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2762 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2763 TEST (T, Pi, Showpoint (fixed), 0, 0, ' ', "", "%#.0Lf", Eof, 3.0L); |
|
2764 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2765 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2766 TEST (T, Pi, Showpoint (scientific), 0, 0, ' ', "", "%#.0Le", Eof, 3.0L); |
|
2767 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2768 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2769 TEST (T, Pi, Showpoint (fixed), 0, 0, ' ', "", "3.", Eof, 3.0L); |
|
2770 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2771 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2772 TEST (T, Pi, Showpoint (scientific), 0, 0, ' ', "", "3.e+00", Eof, 3.0L); |
|
2773 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2774 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2775 |
|
2776 #define SHOWPOINT(f) (showpoint | uppercase | f) |
|
2777 |
|
2778 TEST (T, Pi, SHOWPOINT (0), 32, 0, ' ', "", "%#.32LG"); |
|
2779 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2780 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2781 TEST (T, Pi, SHOWPOINT (fixed), 0, 0, ' ', "", "%#.0Lf", Eof, 3.0L); |
|
2782 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2783 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2784 TEST (T, Pi, SHOWPOINT (scientific), 0, 0, ' ', "", "%#.0LE", Eof, 3.0L); |
|
2785 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2786 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2787 TEST (T, Pi, SHOWPOINT (scientific), 0, 0, ' ', "", "3.E+00", Eof, 3.0L); |
|
2788 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2789 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2790 |
|
2791 #define Showall(f) (showpoint | showpos | f) |
|
2792 |
|
2793 TEST (T, Pi, Showall (0), 32, 0, ' ', "", "%#+.32Lg"); |
|
2794 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2795 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2796 TEST (T, Pi, Showall (fixed), 0, 0, ' ', "", "%#+.0Lf", Eof, 3.0L); |
|
2797 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2798 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2799 TEST (T, Pi, Showall (scientific), 0, 0, ' ', "", "%#+.0Le", Eof, 3.0L); |
|
2800 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2801 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2802 TEST (T, Pi, Showall (fixed), 0, 0, ' ', "", "+3.", Eof, 3.0L); |
|
2803 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2804 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2805 TEST (T, Pi, Showall (scientific), 0, 0, ' ', "", "+3.e+00", Eof, 3.0L); |
|
2806 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2807 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2808 |
|
2809 #define SHOWALL(f) (showpoint | showpos | uppercase | f) |
|
2810 |
|
2811 TEST (T, Pi, SHOWALL (0), 32, 0, ' ', "", "%#+.32LG"); |
|
2812 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2813 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2814 TEST (T, Pi, SHOWALL (fixed), 0, 0, ' ', "", "%#+.0Lf", Eof, 3.0L); |
|
2815 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2816 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2817 TEST (T, Pi, SHOWALL (scientific), 0, 0, ' ', "", "%#+.0LE", Eof, 3.0L); |
|
2818 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2819 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2820 TEST (T, Pi, SHOWALL (scientific), 0, 0, ' ', "", "+3.E+00", Eof, 3.0L); |
|
2821 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2822 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2823 |
|
2824 // with {g,G}, precision indicates the number of significant digits |
|
2825 TEST (T, Pi, 0, 1, 0, ' ', "", "%.1Lg", Eof, 3.0L); |
|
2826 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2827 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2828 TEST (T, Pi, 0, 2, 0, ' ', "", "%.2Lg", Eof, 3.1L); |
|
2829 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2830 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2831 TEST (T, Pi, 0, 3, 0, ' ', "", "%.3Lg", Eof, 3.14L); |
|
2832 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2833 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2834 TEST (T, Pi, 0, 10, 0, ' ', "", "%.10Lg", Eof, 3.141592654L); |
|
2835 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2836 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2837 |
|
2838 // C89 and C99 both specify that (only if specified using the asterisk) |
|
2839 // negative precision is treated the same as no precision at all; verify |
|
2840 // that num_put handles negative precision gracefully (i.e., ignores it) |
|
2841 TEST (T, Pi, 0, -1, 0, ' ', "", "%Lg"); |
|
2842 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2843 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2844 TEST (T, Pi, 0, -9, 0, ' ', "", "%Lg"); |
|
2845 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2846 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2847 |
|
2848 // with {e,E,f,F}, precision indicates the number of fractional digits |
|
2849 TEST (T, Pi, fixed, 1, 0, ' ', "", "%.1Lf", Eof, 3.1L); |
|
2850 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2851 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2852 TEST (T, Pi, fixed, 2, 0, ' ', "", "%.2Lf", Eof, 3.14L); |
|
2853 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2854 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2855 TEST (T, Pi, fixed, 3, 0, ' ', "", "%.3Lf", Eof, 3.142L); |
|
2856 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2857 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2858 TEST (T, Pi, fixed, 10, 0, ' ', "", "%.10Lf", Eof, 3.1415926536L); |
|
2859 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2860 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2861 |
|
2862 |
|
2863 // exercise formatting of very large numbers in a fixed notation |
|
2864 // using '-' as the fill character to disable num_get tests |
|
2865 TEST (T, 2.0e+128L, fixed, 0, 0, '-', "", "%.0Lf", Eof); |
|
2866 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2867 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2868 TEST (T, 3.0e+256L, fixed, 0, 0, '-', "", "%.0Lf", Eof); |
|
2869 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2870 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2871 TEST (T, 4.0e+300L, fixed, 0, 0, '-', "", "%.0Lf", Eof); |
|
2872 |
|
2873 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2874 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2875 // extension: fixed format and negative precision |
|
2876 TEST (T, Pi, fixed, -2, 0, ' ', "", "0.03"); |
|
2877 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2878 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2879 TEST (T, Pi, fixed, -8, 0, ' ', "", "0.00000003"); |
|
2880 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2881 |
|
2882 |
|
2883 #undef CAT |
|
2884 #undef CONCAT |
|
2885 |
|
2886 #define CAT(a, b) CONCAT (a, b) |
|
2887 #define CONCAT(a, b) a ## b |
|
2888 |
|
2889 const long double ld = CAT (CAT (1.0e+, _RWSTD_LDBL_MAX_10_EXP), L); |
|
2890 |
|
2891 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2892 |
|
2893 TEST (T, ld, fixed, 0, 0, '-', "", "%.0Lf", Eof); |
|
2894 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2895 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2896 |
|
2897 TEST (T, Pi, scientific, 2, 0, ' ', "", "%.2Le", Eof, 3.14L); |
|
2898 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2899 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2900 TEST (T, Pi, scientific, 4, 0, ' ', "", "%.4Le", Eof, 3.1416L); |
|
2901 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2902 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2903 TEST (T, Pi, scientific, 6, 0, ' ', "", "%.6Le", Eof, 3.141593L); |
|
2904 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2905 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2906 TEST (T, Pi, scientific, 12, 0, ' ', "", "%.12Le", Eof, 3.14159265359L); |
|
2907 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2908 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2909 TEST (T, Pi, scientific, -3, 0, ' ', "", "%Le"); |
|
2910 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2911 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2912 TEST (T, Pi, scientific, -7, 0, ' ', "", "%Le"); |
|
2913 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2914 |
|
2915 |
|
2916 #endif // _RWSTD_NO_LONG_DOUBLE |
|
2917 } |
|
2918 |
|
2919 |
|
2920 /**************************************************************************/ |
|
2921 |
|
2922 template <class charT> |
|
2923 void pvoid_test (charT, const char *cname) |
|
2924 { |
|
2925 const char* const tname = "const void*"; |
|
2926 |
|
2927 rw_info (0, 0, 0, "std::num_put<%s>::put (..., %s)", cname, tname); |
|
2928 |
|
2929 typedef void* PVoid; |
|
2930 |
|
2931 int foo = 0; |
|
2932 int bar = 0; |
|
2933 |
|
2934 // use "0" rather than "%p" for null pointers to avoid |
|
2935 // having to deal with GNU libc's "(nil)" format |
|
2936 |
|
2937 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2938 TEST (T, PVoid ( 0), 0, 0, 0, ' ', "", "0"); |
|
2939 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2940 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2941 TEST (T, PVoid ( 1), 0, 0, 0, ' ', "", "%p"); |
|
2942 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2943 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2944 TEST (T, PVoid ( &foo), 0, 0, 0, ' ', "", "%p"); |
|
2945 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2946 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2947 TEST (T, PVoid ( &bar), 0, 0, 0, ' ', "", "%p"); |
|
2948 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2949 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2950 TEST (T, PVoid ( ~0L), 0, 0, 0, ' ', "", "%p"); |
|
2951 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2952 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2953 |
|
2954 // 22.2.2.2.2, p16 and lwg issue 282: grouping and thousands_sep |
|
2955 // is only used in arithmetic types |
|
2956 TEST (T, PVoid ( 0), 0, 0, 0, ' ', "\1", "0"); |
|
2957 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2958 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2959 TEST (T, PVoid ( 1), 0, 0, 0, ' ', "\1", "%p"); |
|
2960 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2961 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2962 TEST (T, PVoid ( &foo), 0, 0, 0, ' ', "\1\1", "%p"); |
|
2963 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2964 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2965 TEST (T, PVoid ( &bar), 0, 0, 0, ' ', "\1\2", "%p"); |
|
2966 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2967 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2968 TEST (T, PVoid ( ~0L), 0, 0, 0, ' ', "\1\3", "%p"); |
|
2969 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2970 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2971 |
|
2972 TEST (T, PVoid ( SHRT_MAX), 0, 0, 0, ' ', "", "%p"); |
|
2973 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2974 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2975 TEST (T, PVoid ( SHRT_MIN), 0, 0, 0, ' ', "", "%p"); |
|
2976 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2977 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2978 TEST (T, PVoid (USHRT_MAX), 0, 0, 0, ' ', "", "%p"); |
|
2979 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2980 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2981 TEST (T, PVoid ( INT_MAX), 0, 0, 0, ' ', "", "%p"); |
|
2982 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2983 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2984 TEST (T, PVoid ( INT_MIN), 0, 0, 0, ' ', "", "%p"); |
|
2985 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2986 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2987 TEST (T, PVoid ( UINT_MAX), 0, 0, 0, ' ', "", "%p"); |
|
2988 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2989 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2990 TEST (T, PVoid ( LONG_MAX), 0, 0, 0, ' ', "", "%p"); |
|
2991 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2992 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2993 TEST (T, PVoid ( LONG_MIN), 0, 0, 0, ' ', "", "%p"); |
|
2994 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2995 std_log(LOG_FILENAME_LINE,"Test start"); |
|
2996 TEST (T, PVoid (ULONG_MAX), 0, 0, 0, ' ', "", "%p"); |
|
2997 std_log(LOG_FILENAME_LINE,"Test end"); |
|
2998 |
|
2999 |
|
3000 #if _RWSTD_LLONG_SIZE <= _RWSTD_PTR_SIZE |
|
3001 #ifndef __SYMBIAN32__ |
|
3002 |
|
3003 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3004 TEST (T, PVoid (_RWSTD_LLONG_MAX), 0, 0, 0, ' ', "", "%p"); |
|
3005 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3006 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3007 TEST (T, PVoid (_RWSTD_ULLONG_MAX), 0, 0, 0, ' ', "", "%p"); |
|
3008 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3009 |
|
3010 #endif |
|
3011 #endif // LLONG_MAX |
|
3012 |
|
3013 } |
|
3014 |
|
3015 |
|
3016 /**************************************************************************/ |
|
3017 |
|
3018 template <class charT> |
|
3019 void errno_test (charT, const char *cname) |
|
3020 { |
|
3021 const char* const tname = "long"; |
|
3022 |
|
3023 rw_info (0, 0, 0, |
|
3024 "std::num_put<%s>::put (..., %s) and errno", cname, tname); |
|
3025 |
|
3026 // verify that errno doesn't change after, or adversely affect |
|
3027 // successful insertion; and that the insertion doesn't change |
|
3028 // the value of errno |
|
3029 |
|
3030 errno = -1; |
|
3031 |
|
3032 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3033 |
|
3034 TEST (T, 12345L, 0, 0, 0, ' ', "", "12345"); |
|
3035 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3036 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3037 #ifndef __SYMBIAN32__ |
|
3038 rw_assert (-1 == errno, 0, __LINE__, |
|
3039 "errno unexpectedly changed from %d to %{#m} (%m)", -1); |
|
3040 #else |
|
3041 if(-1 !=errno) |
|
3042 { |
|
3043 failures++; |
|
3044 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3045 } |
|
3046 #endif |
|
3047 errno = 0; |
|
3048 |
|
3049 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3050 |
|
3051 TEST (T, 12346L, 0, 0, 0, ' ', "", "12346"); |
|
3052 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3053 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3054 #ifndef __SYMBIAN32__ |
|
3055 rw_assert (0 == errno, 0, __LINE__, |
|
3056 "errno unexpectedly changed from %d to %{#m} (%m)", -0); |
|
3057 #else |
|
3058 if(0!=errno) |
|
3059 { |
|
3060 failures++; |
|
3061 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3062 } |
|
3063 #endif |
|
3064 |
|
3065 errno = 1; |
|
3066 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3067 TEST (T, 12347L, 0, 0, 0, ' ', "", "12347"); |
|
3068 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3069 #ifndef __SYMBIAN32__ |
|
3070 rw_assert (1 == errno, 0, __LINE__, |
|
3071 "errno unexpectedly changed from %d to %{#m} (%m)", 1); |
|
3072 #else |
|
3073 if(1!= errno) |
|
3074 { |
|
3075 failures++; |
|
3076 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3077 } |
|
3078 #endif |
|
3079 errno = 2; |
|
3080 |
|
3081 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3082 TEST (T, 12348L, 0, 0, 0, ' ', "", "12348"); |
|
3083 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3084 #ifndef __SYMBIAN32__ |
|
3085 rw_assert (2 == errno, 0, __LINE__, |
|
3086 "errno unexpectedly changed from %d to %{#m} (%m)", 2); |
|
3087 #else |
|
3088 if(2!= errno) |
|
3089 { |
|
3090 failures++; |
|
3091 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3092 } |
|
3093 #endif |
|
3094 |
|
3095 errno = 3; |
|
3096 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3097 TEST (T, 12349L, 0, 0, 0, ' ', "", "12349"); |
|
3098 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3099 #ifndef __SYMBIAN32__ |
|
3100 rw_assert (3 == errno, 0, __LINE__, |
|
3101 "errno unexpectedly changed from %d to %{#m} (%m)", 3); |
|
3102 #else |
|
3103 if(3!= errno) |
|
3104 { |
|
3105 failures++; |
|
3106 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3107 } |
|
3108 #endif |
|
3109 |
|
3110 errno = 4; |
|
3111 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3112 TEST (T, 12350L, 0, 0, 0, ' ', "", "12350"); |
|
3113 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3114 #ifndef __SYMBIAN32__ |
|
3115 rw_assert (4 == errno, 0, __LINE__, |
|
3116 "errno unexpectedly changed from %d to %{#m} (%m)", 4); |
|
3117 #else |
|
3118 if(4!= errno) |
|
3119 { |
|
3120 failures++; |
|
3121 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3122 } |
|
3123 #endif |
|
3124 |
|
3125 errno = ERANGE; |
|
3126 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3127 TEST (T, 12351L, 0, 0, 0, ' ', "", "12351"); |
|
3128 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3129 #ifndef __SYMBIAN32__ |
|
3130 rw_assert (ERANGE == errno, 0, __LINE__, |
|
3131 "errno unexpectedly changed from %{#m} to %{#m} (%m)", ERANGE); |
|
3132 #else |
|
3133 if(ERANGE!= errno) |
|
3134 { |
|
3135 failures++; |
|
3136 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3137 } |
|
3138 #endif |
|
3139 |
|
3140 errno = Bad; |
|
3141 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3142 TEST (T, 12352L, 0, 0, 0, ' ', "", "12352"); |
|
3143 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3144 #ifndef __SYMBIAN32__ |
|
3145 rw_assert (Bad == errno, 0, __LINE__, |
|
3146 "errno unexpectedly changed from %d to %{#m} (%m)", Bad); |
|
3147 #else |
|
3148 if(Bad != errno) |
|
3149 { |
|
3150 failures++; |
|
3151 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3152 } |
|
3153 #endif |
|
3154 |
|
3155 errno = Eof; |
|
3156 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3157 TEST (T, 12353L, 0, 0, 0, ' ', "", "12353"); |
|
3158 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3159 #ifndef __SYMBIAN32__ |
|
3160 rw_assert (Eof == errno, 0, __LINE__, |
|
3161 "errno unexpectedly changed from %d to %{#m} (%m)", Eof); |
|
3162 #else |
|
3163 if(Eof!= errno) |
|
3164 { |
|
3165 failures++; |
|
3166 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3167 } |
|
3168 #endif |
|
3169 |
|
3170 errno = Fail; |
|
3171 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3172 TEST (T, 12354L, 0, 0, 0, ' ', "", "12354"); |
|
3173 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3174 #ifndef __SYMBIAN32__ |
|
3175 rw_assert (Fail == errno, 0, __LINE__, |
|
3176 "errno unexpectedly changed from %d to %{#m} (%m)", Fail); |
|
3177 #else |
|
3178 if(Fail!= errno) |
|
3179 { |
|
3180 failures++; |
|
3181 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3182 } |
|
3183 #endif |
|
3184 |
|
3185 errno = 0; |
|
3186 } |
|
3187 |
|
3188 |
|
3189 /**************************************************************************/ |
|
3190 |
|
3191 // verify that std::ctype<>::widen() is called at least once |
|
3192 // for every distinct narow character (not for fill characters) |
|
3193 // note that an implementation is allowed to cache the results |
|
3194 // of facet virtual functions() called with the same arguments |
|
3195 // (including the implicit this pointer), so the numbers here |
|
3196 // are minimum required values but not exact or maximums |
|
3197 void widen_test () |
|
3198 { |
|
3199 rw_info (0, 0, 0, |
|
3200 "std::num_put<char>::put (..., long) calls ctype<char>::widen()"); |
|
3201 |
|
3202 static const struct { |
|
3203 long val; |
|
3204 std::streamsize width; |
|
3205 int flags; |
|
3206 int n_widen; |
|
3207 const char *str; |
|
3208 } data[] = { |
|
3209 { 0, 0, 0, 1, "9" }, |
|
3210 { 1, 0, 0, 1, "8" }, |
|
3211 { 11, 0, 0, 1, "88" }, |
|
3212 { 12, 0, 0, 2, "87" }, |
|
3213 { 123, 0, 0, 3, "876" }, |
|
3214 { 111, 0, 0, 1, "888" }, |
|
3215 { -1234, 0, 0, 5, "-8765" }, |
|
3216 { 12121, 0, 0, 2, "87878" }, |
|
3217 { 12345, 0, showpos, 6, "+87654" }, |
|
3218 { 0123456, 0, oct | showbase, 7, "9876543" }, |
|
3219 { 0x234567, 0, hex | showbase, 8, "9x765432" }, |
|
3220 { 0x2345678, 10, hex | showbase, 9, " 9x7654321" }, |
|
3221 { 9, 5, showpos | internal, 2, "+ 0" } |
|
3222 }; |
|
3223 |
|
3224 for (unsigned i = 0; i != sizeof data / sizeof *data; ++i) { |
|
3225 |
|
3226 const Ctype<char> ctp; |
|
3227 |
|
3228 // construct and initialize a basic_ios-derived object |
|
3229 Ios<char> ios; |
|
3230 |
|
3231 // construct a num_put-derived facet to exercise |
|
3232 const NumPut<char> np; |
|
3233 |
|
3234 // imbue a stream object with a custom locale |
|
3235 // containing the replacement ctype facet |
|
3236 ios.imbue (std::locale (ios.getloc (), (const std::ctype<char>*)&ctp)); |
|
3237 |
|
3238 ios.flags (std::ios_base::fmtflags (data [i].flags)); |
|
3239 ios.width (data [i].width); |
|
3240 |
|
3241 char buf [40]; |
|
3242 |
|
3243 // reset function call counter |
|
3244 Ctype<char>::n_widen_ = 0; |
|
3245 |
|
3246 *np.put (buf, ios, ' ', data [i].val) = '\0'; |
|
3247 |
|
3248 #ifndef __SYMBIAN32__ |
|
3249 rw_assert (data [i].n_widen <= Ctype<char>::n_widen_, 0, __LINE__, |
|
3250 "%d. num_put<char>::do_put (..., %d) called " |
|
3251 "ctype<char>::do_widen() %d times, %d expected; " |
|
3252 "flags = %{If}, width = %d", i, data [i].val, |
|
3253 Ctype<char>::n_widen_, data [i].n_widen, |
|
3254 data [i].flags, data [i].width); |
|
3255 |
|
3256 rw_assert (0 == rw_strncmp (buf, data [i].str), 0, __LINE__, |
|
3257 "%d. num_put<char>::do_put (..., %d) produced %s, " |
|
3258 "expected \"%{#*s}\"; " |
|
3259 "flags = %{If}, width = %d", |
|
3260 i, data [i].val, buf, |
|
3261 int (sizeof data [i].str [0]), data [i].str, |
|
3262 data [i].flags, data [i].width); |
|
3263 #else |
|
3264 { |
|
3265 if(!(data [i].n_widen <= Ctype<char>::n_widen_)) |
|
3266 { |
|
3267 failures++; |
|
3268 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3269 } |
|
3270 if(0 != rw_strncmp (buf, data [i].str)) |
|
3271 { |
|
3272 failures++; |
|
3273 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3274 } |
|
3275 |
|
3276 } |
|
3277 #endif //__SYMBIAN32__ |
|
3278 } |
|
3279 } |
|
3280 |
|
3281 |
|
3282 /**************************************************************************/ |
|
3283 |
|
3284 // verify that std::numpunct<>::grouping() is called and used correctly |
|
3285 void grouping_test () |
|
3286 { |
|
3287 // construct a "replacement" numpunct-derived facet |
|
3288 const Punct<char> pun (1); |
|
3289 |
|
3290 // construct and initialize a basic_ios-derived object |
|
3291 Ios<char> ios; |
|
3292 |
|
3293 // construct a num_put-derived facet to exercise |
|
3294 const NumPut<char> np; |
|
3295 |
|
3296 // imbue a stream object with a custom locale |
|
3297 // containing the replacement punctuation facet |
|
3298 ios.imbue (std::locale (ios.getloc (), (const std::numpunct<char>*)&pun)); |
|
3299 #ifndef __SYMBIAN32__ |
|
3300 rw_assert (1 == Punct<char>::n_objs_, 0, __LINE__, |
|
3301 "%d facets exist, 1 expected", Punct<char>::n_objs_); |
|
3302 #else |
|
3303 if(1 != Punct<char>::n_objs_) |
|
3304 { |
|
3305 failures++; |
|
3306 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3307 } |
|
3308 #endif |
|
3309 |
|
3310 // decimal output, no special formatting |
|
3311 ios.setf (std::ios::fmtflags ()); |
|
3312 |
|
3313 char buf [40]; |
|
3314 |
|
3315 // group after every digit |
|
3316 Punct<char>::grouping_ = "\1"; |
|
3317 |
|
3318 // reset the do_thousands_sep()-call counter |
|
3319 Punct<char>::n_thousands_sep_ = 0; |
|
3320 |
|
3321 *np.put (buf, ios, '\0', 123456789L) = '\0'; |
|
3322 |
|
3323 // verify that the number was formatted correctly |
|
3324 #ifdef __SYMBIAN32__ |
|
3325 |
|
3326 if(0 != strcmp (buf, "1,2,3,4,5,6,7,8,9")) |
|
3327 { |
|
3328 failures++; |
|
3329 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3330 } |
|
3331 |
|
3332 if(!(0 < Punct<char>::n_thousands_sep_)) |
|
3333 { |
|
3334 failures++; |
|
3335 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3336 } |
|
3337 #else |
|
3338 rw_assert (0 == std::strcmp (buf, "1,2,3,4,5,6,7,8,9"), 0, __LINE__, |
|
3339 "num_put<char>::do_put (..., 123456789) produced \"%s\", " |
|
3340 "expected \"%s\"", buf, "1,2,3,4,5,6,7,8,9"); |
|
3341 rw_assert (0 < Punct<char>::n_thousands_sep_, 0, __LINE__, |
|
3342 "num_put<char>::do_put (..., 123456789) failed to call " |
|
3343 "numpunct<char>::do_thousands_sep()"); |
|
3344 #endif |
|
3345 // verify that do_thousands_sep() was called at least once |
|
3346 |
|
3347 // repeat test to verify that distinct instances |
|
3348 // of the same facet do not cache each other's data |
|
3349 { |
|
3350 // nested scope works around a SunPro bug (PR #27543) |
|
3351 ios.imbue (std::locale (ios.getloc (), |
|
3352 (const std::numpunct<char>*)new Punct<char>(0))); |
|
3353 } |
|
3354 #ifndef __SYMBIAN32__ |
|
3355 rw_assert (2 == Punct<char>::n_objs_, 0, __LINE__, |
|
3356 "%d facets exist, 2 expected", Punct<char>::n_objs_); |
|
3357 #else |
|
3358 if(2 != Punct<char>::n_objs_) |
|
3359 { |
|
3360 failures++; |
|
3361 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3362 } |
|
3363 |
|
3364 #endif //__SYMBIAN32__ |
|
3365 // now group after every other digit |
|
3366 Punct<char>::grouping_ = "\2"; |
|
3367 |
|
3368 // reset the do_thousands_sep()-call counter |
|
3369 Punct<char>::n_thousands_sep_ = 0; |
|
3370 |
|
3371 *np.put (buf, ios, '\0', 123456790L) = '\0'; |
|
3372 |
|
3373 // again verify that the number was formatted correctly |
|
3374 #ifdef __SYMBIAN32__ |
|
3375 if(0 != strcmp (buf, "1,23,45,67,90")) |
|
3376 { |
|
3377 failures++; |
|
3378 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3379 |
|
3380 } |
|
3381 |
|
3382 if(!(0 < Punct<char>::n_thousands_sep_)) |
|
3383 { |
|
3384 failures++; |
|
3385 std_log(LOG_FILENAME_LINE,"Reason:Failing") ; |
|
3386 } |
|
3387 #else |
|
3388 rw_assert (0 == std::strcmp (buf, "1,23,45,67,90"), 0, __LINE__, |
|
3389 "num_put<char>::do_put (..., 123456790) produced \"%s\", " |
|
3390 "expected \"%s\"", buf, "1,23,45,67,90"); |
|
3391 rw_assert (0 < Punct<char>::n_thousands_sep_, 0, __LINE__, |
|
3392 "num_put<char>::do_put (..., 123456790) failed to call " |
|
3393 "numpunct<char>::do_thousands_sep()"); |
|
3394 |
|
3395 #endif |
|
3396 // verify that do_thousands_sep() was called at least once |
|
3397 // (i.e., that there is no unwarranted caching going on) |
|
3398 |
|
3399 // replace imbued locale with a copy of the classic locale |
|
3400 // and remove the previously installed locale containing |
|
3401 // the user-defined facet; this must destroy the dynamically |
|
3402 // created facet leaving only the local facet on the stack |
|
3403 { |
|
3404 // nested scope works around a SunPro bug (PR #27543) |
|
3405 ios.imbue (std::locale::classic ()); |
|
3406 } |
|
3407 #ifndef __SYMBIAN32__ |
|
3408 rw_assert (1 == Punct<char>::n_objs_, 0, __LINE__, |
|
3409 "%d facets exist, 1 expected", Punct<char>::n_objs_); |
|
3410 #else |
|
3411 if(1 != Punct<char>::n_objs_) |
|
3412 { |
|
3413 failures++; |
|
3414 std_log(LOG_FILENAME_LINE,"Reason:Failing"); |
|
3415 |
|
3416 } |
|
3417 #endif |
|
3418 } |
|
3419 |
|
3420 /**************************************************************************/ |
|
3421 |
|
3422 template <class charT> |
|
3423 void numput_virtuals_test (charT, const char *cname) |
|
3424 { |
|
3425 const NumPut<charT> put (1); |
|
3426 const std::num_put<charT, charT*> &np = put; |
|
3427 |
|
3428 Ios<charT> ios; |
|
3429 |
|
3430 ios.flags (std::ios_base::fmtflags ()); |
|
3431 |
|
3432 #define Abs(i) ((i) < 0 ? (-i) : (i)) |
|
3433 |
|
3434 #define ASSERT(T, N, T2, tname, t2name) \ |
|
3435 do { \ |
|
3436 /* number of expected calls to the do_put() member */ \ |
|
3437 const int expect = N + put.ncalls_ [put.test_ ## T]; \ |
|
3438 const int expect_2 = !N + put.ncalls_ [put.test_ ## T2]; \ |
|
3439 charT buf [80]; \ |
|
3440 const charT* const end = np.put (buf, ios, charT (), (T)0); \ |
|
3441 rw_assert (end == buf + 1, 0, __LINE__, \ |
|
3442 "line %d: num_put<%s>::put (..., %s = 0) " \ |
|
3443 "return value", __LINE__, cname, tname); \ |
|
3444 const int ncalls = put.ncalls_ [put.test_ ## T]; \ |
|
3445 const int ncalls_2 = put.ncalls_ [put.test_ ## T2]; \ |
|
3446 rw_assert (expect == ncalls, 0, __LINE__, \ |
|
3447 "line %d: num_put<%s>::put (..., %s) called " \ |
|
3448 "do_put(..., %s) %d times, expected %d", \ |
|
3449 __LINE__, cname, tname, \ |
|
3450 tname, Abs (ncalls - expect - N), N); \ |
|
3451 /* make sure extensions, if any, are implemented in */ \ |
|
3452 /* terms of and call the standard virtual functions */ \ |
|
3453 /* bogus addressof operator prevents warnings about */ \ |
|
3454 /* unreachable code when T is the same as T2 */ \ |
|
3455 if (put.test_ ## T != put.test_ ## T2) \ |
|
3456 rw_assert (expect_2 == ncalls_2, 0, __LINE__, \ |
|
3457 "line %d: num_put<%s>::put (..., %s) called " \ |
|
3458 "do_put(..., %s) %d times, expected %d", \ |
|
3459 __LINE__, cname, tname, \ |
|
3460 t2name, Abs (expect_2 - ncalls_2 - !N), !N); \ |
|
3461 } while (0) |
|
3462 |
|
3463 typedef unsigned short ushort; |
|
3464 typedef unsigned int uint; |
|
3465 typedef unsigned long ulong; |
|
3466 |
|
3467 // verify that each public member function calls each corresponding |
|
3468 // implementation do_xxx() member functions exactly once |
|
3469 |
|
3470 // in the case of extensions, verify that each extended public member |
|
3471 // function calls the appropriate implementation standard do_xxx() |
|
3472 // member function |
|
3473 |
|
3474 #ifndef _RWSTD_NO_BOOL |
|
3475 ASSERT (bool, 1, bool, "bool", "bool"); |
|
3476 #endif // _RWSTD_NO_BOOL |
|
3477 |
|
3478 ASSERT (long, 1, long, "long", "long"); |
|
3479 ASSERT (ulong, 1, ulong, "unsigned long", "unsigned long"); |
|
3480 |
|
3481 #if defined (_RWSTD_LONG_LONG) && !defined (_RWSTD_NO_EXT_NUM_PUT) |
|
3482 |
|
3483 typedef _RWSTD_LONG_LONG llong; |
|
3484 typedef unsigned _RWSTD_LONG_LONG ullong; |
|
3485 |
|
3486 ASSERT (llong, 1, llong, "long long", "long long"); |
|
3487 ASSERT (ullong, 1, ullong, "unsigned long long", "unsigned long long"); |
|
3488 |
|
3489 #endif // _RWSTD_LONG_LONG && !_RWSTD_NO_EXT_NUM_PUT |
|
3490 |
|
3491 ASSERT (double, 1, double, "double", "double"); |
|
3492 |
|
3493 #ifndef _RWSTD_NO_LONG_DOUBLE |
|
3494 |
|
3495 typedef long double ldouble; |
|
3496 #ifndef __SYMBIAN32__ |
|
3497 ASSERT (ldouble, 1, ldouble, "long double", "long double"); |
|
3498 #endif |
|
3499 #endif // _RWSTD_NO_LONG_DOUBLE |
|
3500 |
|
3501 typedef const void* pvoid; |
|
3502 ASSERT (pvoid, 1, pvoid, "const void*", "const void*"); |
|
3503 } |
|
3504 |
|
3505 /**************************************************************************/ |
|
3506 |
|
3507 template <class charT> |
|
3508 void run_tests (charT, const char *cname) |
|
3509 { |
|
3510 numput_virtuals_test (charT (), cname); |
|
3511 #if 0 //FIX |
|
3512 direct_use_test (charT (), cname); |
|
3513 #endif //#if 0 |
|
3514 |
|
3515 #undef TEST |
|
3516 #define TEST(T, tname) \ |
|
3517 if (rw_enabled (#T)) \ |
|
3518 T ## _test (charT (), cname); \ |
|
3519 else \ |
|
3520 rw_note (0, __FILE__, __LINE__, "%s test disabled", \ |
|
3521 tname && *tname ? tname : #T) |
|
3522 |
|
3523 #ifndef _RWSTD_NO_BOOL |
|
3524 |
|
3525 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3526 TEST (bool, ""); |
|
3527 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3528 #endif // _RWSTD_NO_BOOL |
|
3529 |
|
3530 |
|
3531 // NOTE: there is no num_put::put(..., short) |
|
3532 // TEST (shrt, "short"); |
|
3533 // TEST (ushrt, "unsigned short"); |
|
3534 |
|
3535 // NOTE: there is no num_put::put(..., int) |
|
3536 // TEST (int, ""); |
|
3537 // TEST (uint, "unsigned int"); |
|
3538 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3539 TEST (long, ""); |
|
3540 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3541 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3542 TEST (ulong, "unsigned long"); |
|
3543 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3544 #ifndef _RWSTD_NO_LONG_LONG |
|
3545 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3546 TEST (llong, "long long"); |
|
3547 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3548 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3549 TEST (ullong, "unsigned long long"); |
|
3550 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3551 #endif // _RWSTD_NO_LONG_LONG |
|
3552 |
|
3553 // NOTE: there is no num_put::put(..., float) |
|
3554 // TEST (flt, "float"); |
|
3555 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3556 TEST (dbl, "dbouble"); |
|
3557 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3558 #if 0 // no long double support |
|
3559 #ifndef _RWSTD_NO_LONG_DOUBLE |
|
3560 |
|
3561 TEST (ldbl, "long double"); |
|
3562 |
|
3563 #endif // _RWSTD_NO_LONG_DOUBLE |
|
3564 #endif //#if 0 |
|
3565 std_log(LOG_FILENAME_LINE,"Test start"); |
|
3566 TEST (pvoid, "void*"); |
|
3567 std_log(LOG_FILENAME_LINE,"Test end"); |
|
3568 if (rw_opt_no_errno) |
|
3569 rw_note (0, __FILE__, __LINE__, "errno test disabled"); |
|
3570 else |
|
3571 errno_test (charT (), cname); |
|
3572 } |
|
3573 |
|
3574 /**************************************************************************/ |
|
3575 |
|
3576 static int |
|
3577 run_test (int, char*[]) |
|
3578 { |
|
3579 if (rw_opt_no_widen) { |
|
3580 rw_note (0, 0, 0, "widen test disabled"); |
|
3581 } |
|
3582 else { |
|
3583 // widen_test (); |
|
3584 } |
|
3585 |
|
3586 if (rw_opt_no_grouping) { |
|
3587 rw_note (0, 0, 0, "grouping test disabled"); |
|
3588 } |
|
3589 else { |
|
3590 grouping_test (); |
|
3591 } |
|
3592 |
|
3593 if (rw_enabled ("char")) |
|
3594 run_tests (char (), "char"); |
|
3595 else |
|
3596 rw_note (0, __FILE__, __LINE__, "char test disabled"); |
|
3597 |
|
3598 #ifndef _RWSTD_NO_WCHAR_T |
|
3599 |
|
3600 if (rw_enabled ("wchar_t")) |
|
3601 run_tests (wchar_t (), "wchar_t"); |
|
3602 else |
|
3603 rw_note (0, __FILE__, __LINE__, "wchar_t test disabled"); |
|
3604 |
|
3605 #endif // _RWSTD_NO_WCHAR_T |
|
3606 |
|
3607 return 0; |
|
3608 } |
|
3609 |
|
3610 /**************************************************************************/ |
|
3611 //#endif // #if 0 |
|
3612 int main (int argc, char *argv[]) |
|
3613 { |
|
3614 #ifndef __SYMBIAN32__ |
|
3615 return rw_test (argc, argv, __FILE__,"lib.locale.num.put",0 , run_test,"|-enable-num_get# ""|-no-errno# " |
|
3616 "|-no-grouping# ""|-no-widen# ",&rw_opt_enable_num_get,&rw_opt_no_errno,&rw_opt_no_grouping,&rw_opt_no_widen); |
|
3617 #else |
|
3618 rw_test (argc, argv, __FILE__,"lib.locale.num.put",0 , run_test,"|-enable-num_get# ""|-no-errno# " |
|
3619 "|-no-grouping# ""|-no-widen# ",&rw_opt_enable_num_get,&rw_opt_no_errno,&rw_opt_no_grouping,&rw_opt_no_widen); |
|
3620 |
|
3621 if(failures) |
|
3622 { |
|
3623 assert_failed = true; |
|
3624 std_log(LOG_FILENAME_LINE,"Result: Failed"); |
|
3625 } |
|
3626 else |
|
3627 { |
|
3628 |
|
3629 std_log(LOG_FILENAME_LINE,"Result: Passed"); |
|
3630 } |
|
3631 |
|
3632 std_log(LOG_FILENAME_LINE,"[End Test Case]"); |
|
3633 |
|
3634 testResultXml("22_locale_num_put"); |
|
3635 close_log_file(); |
|
3636 |
|
3637 return 0; |
|
3638 #endif |
|
3639 } |