libkernaux/bindings/mruby/test/printf.rb

74 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
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