summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/reline/test_history.rb9
-rw-r--r--test/reline/test_unicode.rb28
2 files changed, 37 insertions, 0 deletions
diff --git a/test/reline/test_history.rb b/test/reline/test_history.rb
index ddf8fb1472..ea902b0653 100644
--- a/test/reline/test_history.rb
+++ b/test/reline/test_history.rb
@@ -266,6 +266,15 @@ class Reline::History::Test < Reline::TestCase
assert_equal 5, history.size
end
+ def test_history_encoding_conversion
+ history = history_new
+ text1 = String.new("a\u{65535}b\xFFc", encoding: Encoding::UTF_8)
+ text2 = String.new("d\xFFe", encoding: Encoding::Shift_JIS)
+ history.push(text1.dup, text2.dup)
+ expected = [text1, text2].map { |s| s.encode(Reline.encoding_system_needs, invalid: :replace, undef: :replace) }
+ assert_equal(expected, history.to_a)
+ end
+
private
def history_new(history_size: 10)
diff --git a/test/reline/test_unicode.rb b/test/reline/test_unicode.rb
index deba4d4681..688d25e238 100644
--- a/test/reline/test_unicode.rb
+++ b/test/reline/test_unicode.rb
@@ -89,4 +89,32 @@ class Reline::Unicode::Test < Reline::TestCase
assert_equal ["\e[31mc\1ABC\2d\e[0mef", 2, 4], Reline::Unicode.take_mbchar_range("\e[31mabc\1ABC\2d\e[0mefghi", 2, 4)
assert_equal ["\e[41m \e[42mい\e[43m ", 1, 4], Reline::Unicode.take_mbchar_range("\e[41mあ\e[42mい\e[43mう", 1, 4, padding: true)
end
+
+ def test_encoding_conversion
+ texts = [
+ String.new("invalid\xFFutf8", encoding: 'utf-8'),
+ String.new("invalid\xFFsjis", encoding: 'sjis'),
+ "utf8#{33111.chr('sjis')}convertible",
+ "utf8#{33222.chr('sjis')}inconvertible",
+ "sjis->utf8->sjis#{60777.chr('sjis')}irreversible"
+ ]
+ utf8_texts = [
+ 'invalid�utf8',
+ 'invalid�sjis',
+ 'utf8仝convertible',
+ 'utf8�inconvertible',
+ 'sjis->utf8->sjis劦irreversible'
+ ]
+ sjis_texts = [
+ 'invalid?utf8',
+ 'invalid?sjis',
+ "utf8#{33111.chr('sjis')}convertible",
+ 'utf8?inconvertible',
+ "sjis->utf8->sjis#{60777.chr('sjis')}irreversible"
+ ]
+ assert_equal(utf8_texts, texts.map { |s| Reline::Unicode.safe_encode(s, 'utf-8') })
+ assert_equal(utf8_texts, texts.map { |s| Reline::Unicode.safe_encode(s, Encoding::UTF_8) })
+ assert_equal(sjis_texts, texts.map { |s| Reline::Unicode.safe_encode(s, 'sjis') })
+ assert_equal(sjis_texts, texts.map { |s| Reline::Unicode.safe_encode(s, Encoding::Windows_31J) })
+ end
end