@@ -3,7 +3,7 @@ use lib <t/spec/packages>;
3
3
use Test ;
4
4
use Test ::Util;
5
5
6
- plan 172 ;
6
+ plan 173 ;
7
7
8
8
# L<S32::Str/Str/"identical to" "C library sprintf">
9
9
@@ -302,4 +302,34 @@ throws-like { sprintf "%d" }, X::Str::Sprintf::Directives::Count,
302
302
' %064b format works with negatives' ;
303
303
}
304
304
305
+ # RT #132846
306
+ subtest ' sprintf with Numeric/Str type objects' => {
307
+ plan 18 * my @ types := Num , Int , Rat , Complex , Str ;
308
+ sub qs (| c) { quietly sprintf | c }
309
+
310
+ for @ types -> \T {
311
+ my $ p := " with { T. perl } " ;
312
+ is-deeply qs(' %c' , T), " \0" , " % c $ p" ;
313
+ is-deeply qs(' %02c' , T), " 0\0" , " %02c $ p" ;
314
+ is-deeply qs(' %u' , T), ' 0' , " % u $ p" ;
315
+ is-deeply qs(' %02u' , T), ' 00' , " %02u $ p" ;
316
+ is-deeply qs(' %x' , T), ' 0' , " % x $ p" ;
317
+ is-deeply qs(' %02x' , T), ' 00' , " %02x $ p" ;
318
+
319
+ is-deeply qs(' %d' , T), ' 0' , " % d $ p" ;
320
+ is-deeply qs(' %02d' , T), ' 00' , " %02d $ p" ;
321
+ is-deeply qs(' %b' , T), ' 0' , " % b $ p" ;
322
+ is-deeply qs(' %02b' , T), ' 00' , " %02b $ p" ;
323
+ is-deeply qs(' %o' , T), ' 0' , " % o $ p" ;
324
+ is-deeply qs(' %02o' , T), ' 00' , " %02o $ p" ;
325
+
326
+ is-deeply qs(' %f' , T), ' 0.000000' , " % f $ p" ;
327
+ is-deeply qs(' %.2f' , T), ' 0.00' , " %.2f $ p" ;
328
+ is-deeply qs(' %e' , T), ' 0.000000e+00' , " % e $ p" ;
329
+ is-deeply qs(' %.2e' , T), ' 0.00e+00' , " %.2e $ p" ;
330
+ is-deeply qs(' %g' , T), ' 0' , " % g $ p" ;
331
+ is-deeply qs(' %.2g' , T), ' 0' , " %.2g $ p" ;
332
+ }
333
+ }
334
+
305
335
# vim: ft=perl6
0 commit comments