mirror of https://github.com/tailix/libkernaux.git
75 lines
3.4 KiB
Ruby
75 lines
3.4 KiB
Ruby
if KernAux::Version.with_printf?
|
|
assert 'KernAux.sprintf' do
|
|
assert 'integers' do
|
|
assert_equal 'i:0', KernAux.sprintf('i:', ['%i', 0])
|
|
assert_equal 'u:0', KernAux.sprintf('u:', ['%u', 0])
|
|
assert_equal 'i:1', KernAux.sprintf('i:', ['%i', 1])
|
|
assert_equal 'u:1', KernAux.sprintf('u:', ['%u', 1])
|
|
assert_equal 'i:10', KernAux.sprintf('i:', ['%i', 10])
|
|
assert_equal 'u:10', KernAux.sprintf('u:', ['%u', 10])
|
|
assert_equal 'i:100', KernAux.sprintf('i:', ['%i', 100])
|
|
assert_equal 'u:100', KernAux.sprintf('u:', ['%u', 100])
|
|
assert_equal 'i:1000', KernAux.sprintf('i:', ['%i', 1000])
|
|
assert_equal 'u:1000', KernAux.sprintf('u:', ['%u', 1000])
|
|
assert_equal 'i:10000', KernAux.sprintf('i:', ['%i', 10_000])
|
|
assert_equal 'u:10000', KernAux.sprintf('u:', ['%u', 10_000])
|
|
assert_equal 'i:100000', KernAux.sprintf('i:', ['%i', 100_000])
|
|
assert_equal 'u:100000', KernAux.sprintf('u:', ['%u', 100_000])
|
|
assert_equal 'i:1000000', KernAux.sprintf('i:', ['%i', 1_000_000])
|
|
assert_equal 'u:1000000', KernAux.sprintf('u:', ['%u', 1_000_000])
|
|
assert_equal 'i:10000000', KernAux.sprintf('i:', ['%i', 10_000_000])
|
|
assert_equal 'u:10000000', KernAux.sprintf('u:', ['%u', 10_000_000])
|
|
assert_equal 'i:100000000', KernAux.sprintf('i:', ['%i', 10**8])
|
|
assert_equal 'u:100000000', KernAux.sprintf('u:', ['%u', 10**8])
|
|
assert_equal 'i:1000000000', KernAux.sprintf('i:', ['%i', 10**9])
|
|
assert_equal 'u:1000000000', KernAux.sprintf('u:', ['%u', 10**9])
|
|
assert_equal 'i:2147483647', KernAux.sprintf('i:', ['%i', 2**31 - 1])
|
|
assert_equal 'u:2147483647', KernAux.sprintf('u:', ['%u', 2**31 - 1])
|
|
end
|
|
|
|
# TODO: test with different boxing
|
|
# assert 'integer overflows' do
|
|
# assert_equal 'i:-2147483648', KernAux.sprintf('i:', ['%i', 2**31])
|
|
# assert_equal 'u: 2147483648', KernAux.sprintf('u: ', ['%u', 2**31])
|
|
# assert_equal 'i:-2147483647', KernAux.sprintf('i:', ['%i', 2**31 + 1])
|
|
# assert_equal 'u: 2147483649', KernAux.sprintf('u: ', ['%u', 2**31 + 1])
|
|
# assert_equal 'i:-1', KernAux.sprintf('i:', ['%i', 2**32 - 1])
|
|
# assert_equal 'u: 4294967295', KernAux.sprintf('u: ', ['%u', 2**32 - 1])
|
|
# assert_equal 'i: 0', KernAux.sprintf('i: ', ['%i', 2**32])
|
|
# assert_equal 'u: 0', KernAux.sprintf('u: ', ['%u', 2**32])
|
|
# end
|
|
|
|
[
|
|
['', 'using regular tests'],
|
|
['_orig', 'using original tests'],
|
|
].each do |(suffix, description)|
|
|
assert description do
|
|
printf_yml =
|
|
File.expand_path("../../../../common/printf#{suffix}.yml", __FILE__)
|
|
|
|
YAML.load(File.read(printf_yml)).each do |test|
|
|
expected = test['result']
|
|
|
|
args = test['args'].map do |arg|
|
|
if arg.is_a? String
|
|
arg
|
|
else
|
|
arg.map do |item|
|
|
if item.is_a? Array
|
|
item[0]
|
|
else
|
|
item
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
assert "transforms #{args.inspect} to #{expected.inspect}" do
|
|
assert_equal expected, KernAux.sprintf(*args)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|