1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

more IO m17n tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2007-12-23 16:10:36 +00:00
parent fa1e530063
commit 8fb23913ad

View file

@ -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