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