diff options
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/test_econv.rb | 36 | ||||
-rw-r--r-- | test/ruby/test_io_m17n.rb | 13 |
2 files changed, 40 insertions, 9 deletions
diff --git a/test/ruby/test_econv.rb b/test/ruby/test_econv.rb index 5c9fc143b1..ef87fff4cc 100644 --- a/test/ruby/test_econv.rb +++ b/test/ruby/test_econv.rb @@ -738,20 +738,37 @@ class TestEncodingConverter < Test::Unit::TestCase assert_equal('', ec.finish) end - def test_xml_escape_attr - ec = Encoding::Converter.new("", "xml-attr-escaped") + def test_xml_escape_attr_content + ec = Encoding::Converter.new("", "xml-attr-content-escaped") + assert_equal('', ec.finish) + + ec = Encoding::Converter.new("", "xml-attr-content-escaped") + assert_equal('', ec.convert("")) + assert_equal('', ec.finish) + + ec = Encoding::Converter.new("", "xml-attr-content-escaped") + assert_equal('"', ec.convert('"')) + assert_equal('', ec.finish) + + ec = Encoding::Converter.new("", "xml-attr-content-escaped") + assert_equal('&<>"', ec.convert("&<>\"")) + assert_equal('', ec.finish) + end + + def test_xml_escape_attr_quote + ec = Encoding::Converter.new("", "xml-attr-quoted") assert_equal('""', ec.finish) - ec = Encoding::Converter.new("", "xml-attr-escaped") + ec = Encoding::Converter.new("", "xml-attr-quoted") assert_equal('', ec.convert("")) assert_equal('""', ec.finish) - ec = Encoding::Converter.new("", "xml-attr-escaped") - assert_equal('""', ec.convert('"')) + ec = Encoding::Converter.new("", "xml-attr-quoted") + assert_equal('""', ec.convert('"')) assert_equal('"', ec.finish) - ec = Encoding::Converter.new("", "xml-attr-escaped") - assert_equal('"&<>"', ec.convert("&<>\"")) + ec = Encoding::Converter.new("", "xml-attr-quoted") + assert_equal('"&<>"', ec.convert("&<>\"")) assert_equal('"', ec.finish) end @@ -760,7 +777,10 @@ class TestEncodingConverter < Test::Unit::TestCase assert_equal('<♥>&"♡"', ec.convert("<\u2665>&\"\u2661\"")) assert_equal('', ec.finish) - ec = Encoding::Converter.new("utf-8", "euc-jp", Encoding::Converter::XML_ATTR_ENCODER|Encoding::Converter::UNDEF_HEX_CHARREF) + ec = Encoding::Converter.new("utf-8", "euc-jp", + Encoding::Converter::XML_ATTR_CONTENT_ENCODER| + Encoding::Converter::XML_ATTR_QUOTE_ENCODER| + Encoding::Converter::UNDEF_HEX_CHARREF) assert_equal('"<♥>&"♡"', ec.convert("<\u2665>&\"\u2661\"")) assert_equal('"', ec.finish) diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb index 9d999be59e..57943df25f 100644 --- a/test/ruby/test_io_m17n.rb +++ b/test/ruby/test_io_m17n.rb @@ -1461,6 +1461,18 @@ EOT def test_w_xml_attr with_tmpdir { + open("raw.txt", "wb", xml: :attr) {|f| f.print '&<>"\''; f.puts "\u4E02\u3042" } + content = File.read("raw.txt", :mode=>"rb:ascii-8bit") + assert_equal("\"&<>"'\u4E02\u3042\n\"".force_encoding("ascii-8bit"), content) + + open("ascii.txt", "wb:us-ascii", xml: :attr) {|f| f.print '&<>"\''; f.puts "\u4E02\u3042" } + content = File.read("ascii.txt", :mode=>"rb:ascii-8bit") + assert_equal("\"&<>"'丂あ\n\"".force_encoding("ascii-8bit"), content) + + open("iso-2022-jp.txt", "wb:iso-2022-jp", xml: :attr) {|f| f.print '&<>"\''; f.puts "\u4E02\u3042" } + content = File.read("iso-2022-jp.txt", :mode=>"rb:ascii-8bit") + assert_equal("\"&<>"'丂\e$B$\"\e(B\n\"".force_encoding("ascii-8bit"), content) + open("eucjp.txt", "w:euc-jp:utf-8", xml: :attr) {|f| f.print "\u4E02" # U+4E02 is 0x3021 in JIS X 0212 } @@ -1480,6 +1492,5 @@ EOT assert_equal("\"丂\"".force_encoding("ascii-8bit"), content) } end - end |