3
3
class TestSprintf < Test::Unit::TestCase
5
assert_equal(" 00001", sprintf("%*1$.*2$3$d", 10, 5, 1))
5
9
assert_equal("0", sprintf("%b", 0))
6
10
assert_equal("1", sprintf("%b", 1))
138
142
assert_equal("-Inf ", sprintf("%- 08f", -inf))
139
143
assert_equal("-0000Inf", sprintf("%+ 08f", -inf))
149
# Star precision before star width:
150
assert_raise(ArgumentError) {sprintf("%.**d", 5, 10, 1)}
152
# Precision before flags and width:
153
assert_raise(ArgumentError) {sprintf("%.5+05d", 5)}
154
assert_raise(ArgumentError) {sprintf("%.5 5d", 5)}
156
# Overriding a star width with a numeric one:
157
assert_raise(ArgumentError) {sprintf("%*1s", 5, 1)}
159
# Width before flags:
160
assert_raise(ArgumentError) {sprintf("%5+0d", 1)}
161
assert_raise(ArgumentError) {sprintf("%5 0d", 1)}
163
# Specifying width multiple times:
164
assert_raise(ArgumentError) {sprintf("%50+30+20+10+5d", 5)}
165
assert_raise(ArgumentError) {sprintf("%50 30 20 10 5d", 5)}
168
# Specifying the precision multiple times with negative star arguments:
169
assert_raise(ArgumentError) {sprintf("%.*.*.*.*f", -1, -1, -1, 5, 1)}
172
# Null bytes after percent signs are removed:
173
assert_equal("%\0x hello", sprintf("%\0x hello"))
176
assert_raise(ArgumentError) {sprintf("%.25555555555555555555555555555555555555s", "hello")}