diff options
| author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-23 16:10:36 +0000 |
|---|---|---|
| committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-23 16:10:36 +0000 |
| commit | 8a2d2023bc6c409cc7143a6256df774b684ef53d (patch) | |
| tree | f98e087b33d565c2c7cd1cbb1e9d11088d36c66c /test/ruby | |
| parent | 6342e704a779fac6bca464e2470a70ae84a77ba5 (diff) | |
| download | ruby-8a2d2023bc6c409cc7143a6256df774b684ef53d.tar.gz ruby-8a2d2023bc6c409cc7143a6256df774b684ef53d.tar.xz ruby-8a2d2023bc6c409cc7143a6256df774b684ef53d.zip | |
more IO m17n tests.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_io_m17n.rb | 126 |
1 files changed, 122 insertions, 4 deletions
diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb index 43f3c3ce0..e6ba9913a 100644 --- a/test/ruby/test_io_m17n.rb +++ b/test/ruby/test_io_m17n.rb @@ -1,7 +1,7 @@ require 'test/unit' require 'tmpdir' -class TestIOM17N < Test::Unit::TestCase +class TestIO_M17N < Test::Unit::TestCase def with_tmpdir Dir.mktmpdir {|dir| Dir.chdir dir @@ -9,14 +9,132 @@ class TestIOM17N < Test::Unit::TestCase } end - def test_conversion + def generate_file(path, content) + open(path, "wb") {|f| f.write content } + end + + def encdump(str) + "#{str.dump}.force_encoding(#{str.encoding.name.dump})" + end + + def assert_str_equal(expected, actual, message=nil) + full_message = build_message(message, <<EOT) +#{encdump expected} expected but not equal to +#{encdump actual}. +EOT + assert_block(full_message) { expected == actual } + end + + def test_terminator_conversion with_tmpdir { - open("tmp", "w") {|f| f.write "before \u00FF after" } + generate_file('tmp', "before \u00FF after") s = open("tmp", "r:iso-8859-1:utf-8") {|f| f.gets("\xFF".force_encoding("iso-8859-1")) } - assert_equal("before \xFF".force_encoding("iso-8859-1"), s, '[ruby-core:14288]') + assert_str_equal("before \xFF".force_encoding("iso-8859-1"), s, '[ruby-core:14288]') + } + end + + def test_open_ascii + with_tmpdir { + src = "abc\n" + generate_file('tmp', "abc\n") + [ + Encoding::ASCII_8BIT, + Encoding::EUC_JP, + Encoding::Shift_JIS, + Encoding::UTF_8 + ].each {|enc| + s = open('tmp', "r:#{enc}") {|f| f.gets } + assert_equal(enc, s.encoding) + assert_str_equal(src, s) + } } end + + def test_open_nonascii + with_tmpdir { + src = "\xc2\xa1\n" + generate_file('tmp', src) + [ + Encoding::ASCII_8BIT, + Encoding::EUC_JP, + Encoding::Shift_JIS, + Encoding::UTF_8 + ].each {|enc| + s = open('tmp', "r:#{enc}") {|f| f.gets } + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc), s) + } + } + end + + def test_bytes + with_tmpdir { + src = "\xc2\xa1\n".force_encoding("ASCII-8BIT") + generate_file('tmp', "\xc2\xa1\n") + [ + Encoding::ASCII_8BIT, + Encoding::EUC_JP, + Encoding::Shift_JIS, + Encoding::UTF_8 + ].each {|enc| + open('tmp', "r:#{enc}") {|f| + s = f.getc + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc)[0], s) + } + open('tmp', "r:#{enc}") {|f| + s = f.readchar + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc)[0], s) + } + open('tmp', "r:#{enc}") {|f| + s = f.gets + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc), s) + } + open('tmp', "r:#{enc}") {|f| + s = f.readline + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc), s) + } + open('tmp', "r:#{enc}") {|f| + lines = f.readlines + assert_equal(1, lines.length) + s = lines[0] + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc), s) + } + open('tmp', "r:#{enc}") {|f| + f.each_line {|s| + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc), s) + } + } + open('tmp', "r:#{enc}") {|f| + s = f.read + assert_equal(enc, s.encoding) + assert_str_equal(src.dup.force_encoding(enc), s) + } + open('tmp', "r:#{enc}") {|f| + s = f.read(1) + assert_equal(Encoding::ASCII_8BIT, s.encoding) + assert_str_equal(src[0], s) + } + open('tmp', "r:#{enc}") {|f| + s = f.readpartial(1) + assert_equal(Encoding::ASCII_8BIT, s.encoding) + assert_str_equal(src[0], s) + } + open('tmp', "r:#{enc}") {|f| + s = f.sysread(1) + assert_equal(Encoding::ASCII_8BIT, s.encoding) + assert_str_equal(src[0], s) + } + } + } + end + end |
