From 2a11c7f62a021a3fd6f991182e2ed30642a5c854 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 18 Jan 2008 15:37:22 +0000 Subject: * sprintf.c (rb_str_format): set result encoding for wider width. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ sprintf.c | 1 + test/ruby/test_m17n.rb | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/ChangeLog b/ChangeLog index d09ae65bed..ab4662b0d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Sat Jan 19 00:37:19 2008 Nobuyoshi Nakada + + * sprintf.c (rb_str_format): set result encoding for wider width. + Sat Jan 19 00:13:19 2008 NAKAMURA Usaku * thread_win32.c (w32_wait_events): shouldn't invoke interrupt handle diff --git a/sprintf.c b/sprintf.c index 28f4ff90e0..3b5d38afa0 100644 --- a/sprintf.c +++ b/sprintf.c @@ -490,6 +490,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) buf[blen++] = ' '; } } + rb_enc_associate(result, enc); break; } } diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index 9e4c061233..5d8deee2b8 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -687,12 +687,44 @@ class TestM17N < Test::Unit::TestCase #assert_strenc("\"\xC2\xA1\"", 'Windows-31J', s("%p") % s("\xc2\xa1")) assert_strenc("\"\xC2\xA1\"", 'UTF-8', u("%p") % u("\xc2\xa1")) + assert_strenc('"\xC2\xA1"', 'ASCII-8BIT', "%10p" % a("\xc2\xa1")) + assert_strenc(" \"\xC2\xA1\"", 'EUC-JP', "%10p" % e("\xc2\xa1")) + #assert_strenc(" \"\xC2\xA1\"", 'Windows-31J', "%10p" % s("\xc2\xa1")) + assert_strenc(" \"\xC2\xA1\"", 'UTF-8', "%10p" % u("\xc2\xa1")) + assert_strenc('"\x00"', 'ASCII-8BIT', a("%p") % a("\x00")) assert_strenc('"\x00"', 'EUC-JP', e("%p") % e("\x00")) assert_strenc('"\x00"', 'Windows-31J', s("%p") % s("\x00")) assert_strenc('"\x00"', 'UTF-8', u("%p") % u("\x00")) end + def test_sprintf_s + assert_strenc('', 'ASCII-8BIT', a("%s") % a("")) + assert_strenc('', 'EUC-JP', e("%s") % e("")) + assert_strenc('', 'Windows-31J', s("%s") % s("")) + assert_strenc('', 'UTF-8', u("%s") % u("")) + + assert_strenc('a', 'ASCII-8BIT', a("%s") % a("a")) + assert_strenc('a', 'EUC-JP', e("%s") % e("a")) + assert_strenc('a', 'Windows-31J', s("%s") % s("a")) + assert_strenc('a', 'UTF-8', u("%s") % u("a")) + + assert_strenc("\xC2\xA1", 'ASCII-8BIT', a("%s") % a("\xc2\xa1")) + assert_strenc("\xC2\xA1", 'EUC-JP', e("%s") % e("\xc2\xa1")) + #assert_strenc("\xC2\xA1", 'Windows-31J', s("%s") % s("\xc2\xa1")) + assert_strenc("\xC2\xA1", 'UTF-8', u("%s") % u("\xc2\xa1")) + + assert_strenc(" \xC2\xA1", 'ASCII-8BIT', "%10s" % a("\xc2\xa1")) + assert_strenc(" \xA1\xA1", 'EUC-JP', "%10s" % e("\xa1\xa1")) + #assert_strenc(" \xC2\xA1", 'Windows-31J', "%10s" % s("\xc2\xa1")) + assert_strenc(" \xC2\xA1", 'UTF-8', "%10s" % u("\xc2\xa1")) + + assert_strenc("\x00", 'ASCII-8BIT', a("%s") % a("\x00")) + assert_strenc("\x00", 'EUC-JP', e("%s") % e("\x00")) + assert_strenc("\x00", 'Windows-31J', s("%s") % s("\x00")) + assert_strenc("\x00", 'UTF-8', u("%s") % u("\x00")) + end + def test_str_lt assert(a("a") < a("\xa1")) assert(a("a") < s("\xa1")) -- cgit v1.2.3