From f9d4a37165ff86fc4ad445f7db09cf9035b7ed4b Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Sun, 23 Jan 2022 00:31:43 +0500 Subject: [PATCH] Add original tests for printf --- pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb | 15 +++++++++++++++ tests/test_printf.c | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb b/pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb index 1936460..27a0914 100644 --- a/pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb +++ b/pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb @@ -153,6 +153,21 @@ RSpec.describe KernAux, '.sprintf' do [' 1234ABCD', ['%20X', 305_441_741]], [' EDCB5433', ['%20X', 3_989_525_555]], [' x', ['%20c', 'x']], + # width *20 + [' Hello', ['%*s', 20, 'Hello']], + [' 1024', ['%*d', 20, 1024]], + [' -1024', ['%*d', 20, -1024]], + [' 1024', ['%*i', 20, 1024]], + [' -1024', ['%*i', 20, -1024]], + [' 1024', ['%*u', 20, 1024]], + [' 4294966272', ['%*u', 20, 4_294_966_272]], + [' 777', ['%*o', 20, 511]], + [' 37777777001', ['%*o', 20, 4_294_966_785]], + [' 1234abcd', ['%*x', 20, 305_441_741]], + [' edcb5433', ['%*x', 20, 3_989_525_555]], + [' 1234ABCD', ['%*X', 20, 305_441_741]], + [' EDCB5433', ['%*X', 20, 3_989_525_555]], + [' x', ['%*c', 20, 'x']], ].each do |expected, *args| it "transforms #{args.inspect} to #{expected.inspect}" do expect(described_class.sprintf(*args)).to eq expected diff --git a/tests/test_printf.c b/tests/test_printf.c index 26c3600..ff06a5d 100644 --- a/tests/test_printf.c +++ b/tests/test_printf.c @@ -106,6 +106,8 @@ int main() test("123.456789", "%f", 123.456789); #endif + // - flag + // ... test("42", "%0-d", 42); test("-42", "%0-d", -42); test("42 ", "%0-5d", 42); @@ -120,5 +122,21 @@ int main() test("g", "%0-15.3g", -42.0); #endif + // width *20 + test(" Hello", "%*s", 20, "Hello"); + test(" 1024", "%*d", 20, 1024); + test(" -1024", "%*d", 20, -1024); + test(" 1024", "%*i", 20, 1024); + test(" -1024", "%*i", 20, -1024); + test(" 1024", "%*u", 20, 1024); + test(" 4294966272", "%*u", 20, 4294966272); + test(" 777", "%*o", 20, 511); + test(" 37777777001", "%*o", 20, 4294966785); + test(" 1234abcd", "%*x", 20, 305441741); + test(" edcb5433", "%*x", 20, 3989525555); + test(" 1234ABCD", "%*X", 20, 305441741); + test(" EDCB5433", "%*X", 20, 3989525555); + test(" x", "%*c", 20, 'x'); + return 0; }