diff options
Diffstat (limited to 'test/ruby/test_encoding.rb')
| -rw-r--r-- | test/ruby/test_encoding.rb | 85 |
1 files changed, 12 insertions, 73 deletions
diff --git a/test/ruby/test_encoding.rb b/test/ruby/test_encoding.rb index cde2951413..ef2dc39c4d 100644 --- a/test/ruby/test_encoding.rb +++ b/test/ruby/test_encoding.rb @@ -1,5 +1,5 @@ -# frozen_string_literal: false require 'test/unit' +require_relative 'envutil' class TestEncoding < Test::Unit::TestCase @@ -22,7 +22,7 @@ class TestEncoding < Test::Unit::TestCase aliases.each do |a, en| e = Encoding.find(a) assert_equal(e.name, en) - assert_include(e.names, a) + assert(e.names.include?(a)) end end @@ -56,37 +56,11 @@ class TestEncoding < Test::Unit::TestCase end def test_replicate - assert_separately([], "#{<<~'END;'}") - Warning[:deprecated] = false - assert_instance_of(Encoding, Encoding::UTF_8.replicate("UTF-8-ANOTHER#{Time.now.to_f}")) - assert_instance_of(Encoding, Encoding::ISO_2022_JP.replicate("ISO-2022-JP-ANOTHER#{Time.now.to_f}")) + assert_instance_of(Encoding, Encoding::UTF_8.replicate('UTF-8-ANOTHER')) + assert_instance_of(Encoding, Encoding::ISO_2022_JP.replicate('ISO-2022-JP-ANOTHER')) bug3127 = '[ruby-dev:40954]' assert_raise(TypeError, bug3127) {Encoding::UTF_8.replicate(0)} - assert_raise_with_message(ArgumentError, /\bNUL\b/, bug3127) {Encoding::UTF_8.replicate("\0")} - END; - end - - def test_extra_encoding - assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}") - begin; - 100.times {|i| - EnvUtil.suppress_warning { Encoding::UTF_8.replicate("dummy#{i}") } - } - e = Encoding.list.last - format = "%d".force_encoding(e) - assert_equal("0", format % 0) - assert_equal(e, format.dup.encoding) - assert_equal(e, (format*1).encoding) - - assert_equal(e, (("x"*30).force_encoding(e)*1).encoding) - GC.start - - name = "A" * 64 - Encoding.list.each do |enc| - assert_raise(ArgumentError) { EnvUtil.suppress_warning { enc.replicate(name) } } - name.succ! - end - end; + assert_raise(ArgumentError, bug3127) {Encoding::UTF_8.replicate("\0")} end def test_dummy_p @@ -111,8 +85,8 @@ class TestEncoding < Test::Unit::TestCase def test_aliases assert_instance_of(Hash, Encoding.aliases) Encoding.aliases.each do |k, v| - assert_include(Encoding.name_list, k) - assert_include(Encoding.name_list, v) + assert(Encoding.name_list.include?(k)) + assert(Encoding.name_list.include?(v)) assert_instance_of(String, k) assert_instance_of(String, v) end @@ -126,6 +100,11 @@ class TestEncoding < Test::Unit::TestCase assert_equal(str, str2, '[ruby-dev:38596]') end + def test_unsafe + bug5279 = '[ruby-dev:44469]' + assert_ruby_status([], '$SAFE=4; "a".encode("utf-16be")', bug5279) + end + def test_compatible_p ua = "abc".force_encoding(Encoding::UTF_8) assert_equal(Encoding::UTF_8, Encoding.compatible?(ua, :abc)) @@ -133,45 +112,5 @@ class TestEncoding < Test::Unit::TestCase bin = "a".force_encoding(Encoding::ASCII_8BIT) asc = "b".force_encoding(Encoding::US_ASCII) assert_equal(Encoding::ASCII_8BIT, Encoding.compatible?(bin, asc)) - bin = "\xff".force_encoding(Encoding::ASCII_8BIT).to_sym - asc = "b".force_encoding(Encoding::ASCII_8BIT) - assert_equal(Encoding::ASCII_8BIT, Encoding.compatible?(bin, asc)) - assert_equal(Encoding::UTF_8, Encoding.compatible?("\u{3042}".to_sym, ua.to_sym)) - end - - def test_errinfo_after_autoload - assert_separately(%w[--disable=gems], "#{<<~"begin;"}\n#{<<~'end;'}") - bug9038 = '[ruby-core:57949] [Bug #9038]' - begin; - e = assert_raise_with_message(SyntaxError, /unknown regexp option - Q/, bug9038) { - eval("/regexp/sQ") - } - assert_include(e.message, "/regexp/sQ\n") - end; - end - - def test_nonascii_library_path - assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}".force_encoding("US-ASCII")) - begin; - assert_equal(Encoding::US_ASCII, __ENCODING__) - $:.unshift("/\x80") - assert_raise_with_message(LoadError, /\[Bug #16382\]/) do - require "[Bug #16382]" - end - end; - end - - def test_exceed_encoding_table_size - assert_separately(%w[--disable=gems], "#{<<~"begin;"}\n#{<<~'end;'}") - begin; - begin - enc = Encoding::UTF_8 - 1_000.times{|i| EnvUtil.suppress_warning{ enc.replicate("R_#{i}") } } # now 256 entries - rescue EncodingError => e - assert_match(/too many encoding/, e.message) - else - assert false - end - end; end end |
