summaryrefslogtreecommitdiff
path: root/jni/ruby/test/rdoc/test_rdoc_encoding.rb
diff options
context:
space:
mode:
authorJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-16 18:49:26 +0900
committerJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-30 00:39:06 +0900
commitfcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch)
tree64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/test/rdoc/test_rdoc_encoding.rb
Fresh start
Diffstat (limited to 'jni/ruby/test/rdoc/test_rdoc_encoding.rb')
-rw-r--r--jni/ruby/test/rdoc/test_rdoc_encoding.rb227
1 files changed, 227 insertions, 0 deletions
diff --git a/jni/ruby/test/rdoc/test_rdoc_encoding.rb b/jni/ruby/test/rdoc/test_rdoc_encoding.rb
new file mode 100644
index 0000000..7ec39f8
--- /dev/null
+++ b/jni/ruby/test/rdoc/test_rdoc_encoding.rb
@@ -0,0 +1,227 @@
+# coding: US-ASCII
+
+require 'rdoc/test_case'
+
+class TestRDocEncoding < RDoc::TestCase
+
+ def setup
+ super
+
+ @tempfile = Tempfile.new 'test_rdoc_encoding'
+ end
+
+ def teardown
+ @tempfile.close!
+
+ super
+ end
+
+ def test_class_read_file
+ @tempfile.write "hi everybody"
+ @tempfile.flush
+
+ assert_equal "hi everybody", RDoc::Encoding.read_file(@tempfile.path, nil)
+ end
+
+ def test_class_read_file_encoding
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ expected = "# coding: utf-8\nhi everybody"
+
+ @tempfile.write expected
+ @tempfile.flush
+
+ contents = RDoc::Encoding.read_file @tempfile.path, Encoding::UTF_8
+ assert_equal "hi everybody", contents
+ assert_equal Encoding::UTF_8, contents.encoding
+ end
+
+ def test_class_read_file_encoding_convert
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ content = ""
+ content.encode! 'ISO-8859-1'
+ content << "# coding: ISO-8859-1\nhi \xE9verybody"
+
+ @tempfile.write content
+ @tempfile.flush
+
+ contents = RDoc::Encoding.read_file @tempfile.path, Encoding::UTF_8
+ assert_equal Encoding::UTF_8, contents.encoding
+ assert_equal "hi \u00e9verybody", contents.sub("\r", '')
+ end
+
+ def test_class_read_file_encoding_fail
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ @tempfile.write "# coding: utf-8\n\317\200" # pi
+ @tempfile.flush
+
+ contents = :junk
+
+ _, err = verbose_capture_io do
+ contents = RDoc::Encoding.read_file @tempfile.path, Encoding::US_ASCII
+ end
+
+ assert_nil contents
+
+ assert_match %r%^unable to convert%, err
+ end
+
+ def test_class_read_file_encoding_fancy
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ expected = "# -*- coding: utf-8; fill-column: 74 -*-\nhi everybody"
+ expected.encode! Encoding::UTF_8
+
+ @tempfile.write expected
+ @tempfile.flush
+
+ contents = RDoc::Encoding.read_file @tempfile.path, Encoding::UTF_8
+ assert_equal "hi everybody", contents
+ assert_equal Encoding::UTF_8, contents.encoding
+ end
+
+ def test_class_read_file_encoding_force_transcode
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ @tempfile.write "# coding: utf-8\n\317\200" # pi
+ @tempfile.flush
+
+ contents = RDoc::Encoding.read_file @tempfile.path, Encoding::US_ASCII, true
+
+ assert_equal '?', contents
+ assert_equal Encoding::US_ASCII, contents.encoding
+ end
+
+ def test_class_read_file_encoding_guess
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ path = File.expand_path '../test.ja.txt', __FILE__
+ content = RDoc::Encoding.read_file path, Encoding::UTF_8
+
+ assert_equal Encoding::UTF_8, content.encoding
+ end
+
+ def test_class_read_file_encoding_invalid
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ @tempfile.write "# coding: ascii\nM\xE4r"
+ @tempfile.flush
+
+ contents = :junk
+ _, err = verbose_capture_io do
+ contents = RDoc::Encoding.read_file @tempfile.path, Encoding::UTF_8
+ end
+
+ assert_equal "unable to convert \"\\xE4\" on US-ASCII for #{@tempfile.path}, skipping\n", err
+
+ assert_nil contents
+ end
+
+ def test_class_read_file_encoding_with_signature
+ skip "Encoding not implemented" unless defined? ::Encoding
+
+ @tempfile.write "\xEF\xBB\xBFhi everybody"
+ @tempfile.flush
+
+ bug3360 = '[ruby-dev:41452]'
+ content = RDoc::Encoding.read_file @tempfile.path, Encoding::UTF_8
+ assert_equal Encoding::UTF_8, content.encoding, bug3360
+ assert_equal "hi everybody", content, bug3360
+ end
+
+ def test_class_read_file_encoding_iso_2022_jp
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ input = "# coding: ISO-2022-JP\n:\e$B%3%^%s%I\e(B:"
+
+ @tempfile.write input
+ @tempfile.flush
+
+ contents = RDoc::Encoding.read_file @tempfile.path, Encoding::UTF_8
+
+ expected = ":\xe3\x82\xb3\xe3\x83\x9e\xe3\x83\xb3\xe3\x83\x89:"
+ expected.force_encoding Encoding::UTF_8
+
+ assert_equal expected, contents
+ assert_equal Encoding::UTF_8, contents.encoding
+ end
+
+ def test_class_set_encoding
+ s = "# coding: UTF-8\n"
+ RDoc::Encoding.set_encoding s
+
+ # sanity check for 1.8
+
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ assert_equal Encoding::UTF_8, s.encoding
+
+ s = "#!/bin/ruby\n# coding: UTF-8\n"
+ RDoc::Encoding.set_encoding s
+
+ assert_equal Encoding::UTF_8, s.encoding
+
+ s = "<?xml version='1.0' encoding='UTF-8'?>\n"
+ expected = s.encoding
+ RDoc::Encoding.set_encoding s
+
+ assert_equal Encoding::UTF_8, s.encoding
+
+ s = "<?xml version='1.0' encoding=\"UTF-8\"?>\n"
+ expected = s.encoding
+ RDoc::Encoding.set_encoding s
+
+ assert_equal Encoding::UTF_8, s.encoding
+ end
+
+ def test_class_set_encoding_strip
+ s = "# coding: UTF-8\n# more comments"
+
+ RDoc::Encoding.set_encoding s
+
+ assert_equal "# more comments", s
+
+ s = "#!/bin/ruby\n# coding: UTF-8\n# more comments"
+
+ RDoc::Encoding.set_encoding s
+
+ assert_equal "#!/bin/ruby\n# more comments", s
+ end
+
+ def test_class_set_encoding_bad
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ s = ""
+ expected = s.encoding
+ RDoc::Encoding.set_encoding s
+
+ assert_equal expected, s.encoding
+
+ s = "# vim:set fileencoding=utf-8:\n"
+ expected = s.encoding
+ RDoc::Encoding.set_encoding s
+
+ assert_equal expected, s.encoding
+
+ s = "# vim:set fileencoding=utf-8:\n"
+ expected = s.encoding
+ RDoc::Encoding.set_encoding s
+
+ assert_equal expected, s.encoding
+
+ assert_raises ArgumentError do
+ RDoc::Encoding.set_encoding "# -*- encoding: undecided -*-\n"
+ end
+ end
+
+ def test_sanity
+ skip "Encoding not implemented" unless Object.const_defined? :Encoding
+
+ assert_equal Encoding::US_ASCII, ''.encoding,
+ 'If this file is not ASCII tests may incorrectly pass'
+ end
+
+end
+