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:
parent
fa1e530063
commit
8fb23913ad
1 changed files with 122 additions and 4 deletions
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue