diff options
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/test_econv.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/ruby/test_econv.rb b/test/ruby/test_econv.rb index 0a797aecd6..5194983b8a 100644 --- a/test/ruby/test_econv.rb +++ b/test/ruby/test_econv.rb @@ -365,4 +365,38 @@ class TestEncodingConverter < Test::Unit::TestCase assert_errinfo(:invalid_byte_sequence, "UTF-16LE", "UTF-8", "\x00\xD8", "@\x00", nil, ec) assert_equal("", src) end + + def test_output_region + ec = Encoding::Converter.new("EUC-JP", "UTF-8") + assert_equal(true, ec.primitive_output("abc", dst="", nil, 6)) + assert_equal("abc", dst) + assert_raise(ArgumentError) { ec.primitive_output("abc", dst, 4, 6) } + assert_equal(true, ec.primitive_output("def", dst)) + assert_equal("abcdef", dst) + assert_equal(false, ec.primitive_output("ghi", dst, nil, 1)) + assert_equal("abcdef", dst) + assert_raise(ArgumentError) { ec.primitive_output("jkl", dst, -1, 6) } + assert_raise(ArgumentError) { ec.primitive_output("hij", dst, nil, -1) } + assert_equal("abcdef", dst) + end + + def test_output_iso2022jp + ec = Encoding::Converter.new("EUC-JP", "ISO-2022-JP") + ec.primitive_convert(src="\xa1\xa1", dst="", nil, 10, Encoding::Converter::PARTIAL_INPUT) + assert_equal("\e$B!!".force_encoding("ISO-2022-JP"), dst) + assert_equal(true, ec.primitive_output("???", dst)) + assert_equal("\e$B!!\e(B???".force_encoding("ISO-2022-JP"), dst) + ec.primitive_convert(src="\xa1\xa2", dst, nil, 10, Encoding::Converter::PARTIAL_INPUT) + assert_equal("\e$B!!\e(B???\e$B!\"".force_encoding("ISO-2022-JP"), dst) + + # escape sequences may be reduced in future. + assert_equal(true, ec.primitive_output("\xA1\xA1".force_encoding("EUC-JP"), dst)) + assert_equal("\e$B!!\e(B???\e$B!\"\e(B\e$B!!\e(B".force_encoding("ISO-2022-JP"), dst) + + ec.primitive_convert(src="\xa1\xa3", dst, nil, 10, Encoding::Converter::PARTIAL_INPUT) + assert_equal("\e$B!!\e(B???\e$B!\"\e(B\e$B!!\e(B\e$B!\#".force_encoding("ISO-2022-JP"), dst) + + assert_equal(true, ec.primitive_output("\u3042", dst)) + assert_equal("\e$B!!\e(B???\e$B!\"\e(B\e$B!!\e(B\e$B!\#\e(B\e$B$\"\e(B".force_encoding("ISO-2022-JP"), dst) + end end |