From bd421aa2d25aa73c83642a8f5af8fa16b794a3b6 Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 2 Oct 2008 11:46:40 +0000 Subject: * string.c (rb_str_sub_bang): fix coderange. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_m17n.rb | 15 +++++++++++++++ test/ruby/test_m17n_comb.rb | 33 +++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 12 deletions(-) (limited to 'test') diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index a1772f6408..416d8e190c 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -959,6 +959,21 @@ class TestM17N < Test::Unit::TestCase assert_equal(Encoding::EUC_JP, "\xa4\xa2".force_encoding("euc-jp").gsub(/./, '\&').encoding) end + def test_sub2 + s = "\x80".force_encoding("ASCII-8BIT") + r = Regexp.new("\x80".force_encoding("ASCII-8BIT")) + s2 = s.sub(r, "") + assert(s2.empty?) + assert(s2.ascii_only?) + end + + def test_sub3 + repl = "\x81".force_encoding("sjis") + assert_equal(false, repl.valid_encoding?) + s = "a@".sub(/a/, repl) + assert(s.valid_encoding?) + end + def test_insert s = e("\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4") assert_equal(e("\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4a"), s.insert(-1, "a")) diff --git a/test/ruby/test_m17n_comb.rb b/test/ruby/test_m17n_comb.rb index 1ce151d665..05e45d23cf 100644 --- a/test/ruby/test_m17n_comb.rb +++ b/test/ruby/test_m17n_comb.rb @@ -115,6 +115,7 @@ class TestM17NComb < Test::Unit::TestCase def combination(*args, &b) AllPairs.each(*args, &b) + #AllPairs.exhaustive_each(*args, &b) end def encdump(str) @@ -1395,21 +1396,25 @@ class TestM17NComb < Test::Unit::TestCase [ [ "#{encdump s1}.sub(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { s1.sub(r2, s3) } + lambda { s1.sub(r2, s3) }, + false ], [ "#{encdump s1}.sub(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { s1.sub(r2) { s3 } } + lambda { s1.sub(r2) { s3 } }, + false ], [ "#{encdump s1}.gsub(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { s1.gsub(r2, s3) } + lambda { s1.gsub(r2, s3) }, + true ], [ "#{encdump s1}.gsub(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { s1.gsub(r2) { s3 } } + lambda { s1.gsub(r2) { s3 } }, + true ] - ].each {|desc, doit| + ].each {|desc, doit, g| if !s1.valid_encoding? assert_raise(ArgumentError, desc) { doit.call } next @@ -1422,7 +1427,7 @@ class TestM17NComb < Test::Unit::TestCase assert_equal(s1, doit.call) next end - if !str_enc_compatible?(s1.gsub(r2, ''), s3) + if !str_enc_compatible?(g ? s1.gsub(r2, '') : s1.sub(r2, ''), s3) assert_raise(Encoding::CompatibilityError, desc) { doit.call } next end @@ -1449,21 +1454,25 @@ class TestM17NComb < Test::Unit::TestCase [ [ "t=#{encdump s1}.dup;t.sub!(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { t=s1.dup; [t, t.sub!(r2, s3)] } + lambda { t=s1.dup; [t, t.sub!(r2, s3)] }, + false ], [ "t=#{encdump s1}.dup;t.sub!(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { t=s1.dup; [t, t.sub!(r2) { s3 }] } + lambda { t=s1.dup; [t, t.sub!(r2) { s3 }] }, + false ], [ "t=#{encdump s1}.dup;t.gsub!(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { t=s1.dup; [t, t.gsub!(r2, s3)] } + lambda { t=s1.dup; [t, t.gsub!(r2, s3)] }, + true ], [ "t=#{encdump s1}.dup;t.gsub!(Regexp.new(#{encdump s2}), #{encdump s3})", - lambda { t=s1.dup; [t, t.gsub!(r2) { s3 }] } + lambda { t=s1.dup; [t, t.gsub!(r2) { s3 }] }, + true ] - ].each {|desc, doit| + ].each {|desc, doit, g| if !s1.valid_encoding? assert_raise(ArgumentError, desc) { doit.call } next @@ -1476,7 +1485,7 @@ class TestM17NComb < Test::Unit::TestCase assert_equal([s1, nil], doit.call) next end - if !str_enc_compatible?(s1.gsub(r2, ''), s3) + if !str_enc_compatible?(g ? s1.gsub(r2, '') : s1.sub(r2, ''), s3) assert_raise(Encoding::CompatibilityError, desc) { doit.call } next end -- cgit v1.2.3