fails:StringIO#printf formatting integer formats u converts argument as a decimal number
fails:StringIO#printf formatting float formats a converts floating point argument as [-]0xh.hhhhp[+-]dd
fails:StringIO#printf formatting float formats a displays Float::INFINITY as Inf
fails:StringIO#printf formatting float formats a displays Float::NAN as NaN
fails:StringIO#printf formatting float formats A converts floating point argument as [-]0xh.hhhhp[+-]dd and use uppercase X and P
fails:StringIO#printf formatting float formats A displays Float::INFINITY as Inf
fails:StringIO#printf formatting float formats A displays Float::NAN as NaN
fails:StringIO#printf formatting flags space applies to numeric formats bBdiouxXeEfgGaA leaves a space at the start of non-negative numbers
fails:StringIO#printf formatting flags space applies to numeric formats bBdiouxXeEfgGaA does not leave a space at the start of negative numbers
fails:StringIO#printf formatting flags space applies to numeric formats bBdiouxXeEfgGaA treats several white spaces as one
fails:StringIO#printf formatting flags (digit)$ specifies the absolute argument number for this field
fails:StringIO#printf formatting flags # applies to format o does nothing for negative argument
fails:StringIO#printf formatting flags # applies to formats aAeEfgG forces a decimal point to be added, even if no digits follow
fails:StringIO#printf formatting flags # applies to gG does not remove trailing zeros
fails:StringIO#printf formatting flags + applies to numeric formats bBdiouxXaAeEfgG adds a leading plus sign to non-negative numbers
fails:StringIO#printf formatting flags - left-justifies the result of conversion if width is specified
fails:StringIO#printf formatting flags 0 (zero) applies to numeric formats bBdiouxXaAeEfgG and width is specified pads with zeros, not spaces
fails:StringIO#printf formatting flags * uses the previous argument as the field width
fails:StringIO#printf formatting flags * left-justifies the result if width is negative
fails:StringIO#printf formatting flags * uses the specified argument as the width if * is followed by a number and $
fails:StringIO#printf formatting flags * left-justifies the result if specified with $ argument is negative
fails:StringIO#printf formatting flags * raises ArgumentError when is mixed with width
fails:StringIO#printf formatting width specifies the minimum number of characters that will be written to the result
fails:StringIO#printf formatting precision float types controls the number of decimal places displayed in fraction part
fails:StringIO#printf formatting reference by name %{name} style supports flags, width and precision
