summaryrefslogtreecommitdiff
path: root/test/ruby/test_encoding.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_encoding.rb')
-rw-r--r--test/ruby/test_encoding.rb85
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