ruby-changes:3046
From: ko1@a...
Date: 24 Dec 2007 02:05:51 +0900
Subject: [ruby-changes:3046] akr - Ruby:r14538 (trunk): add test for IO.pipe.
akr 2007-12-24 02:05:40 +0900 (Mon, 24 Dec 2007) New Revision: 14538 Modified files: trunk/test/ruby/test_io_m17n.rb Log: add test for IO.pipe. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_io_m17n.rb?r1=14538&r2=14537 Index: test/ruby/test_io_m17n.rb =================================================================== --- test/ruby/test_io_m17n.rb (revision 14537) +++ test/ruby/test_io_m17n.rb (revision 14538) @@ -2,13 +2,31 @@ require 'tmpdir' class TestIO_M17N < Test::Unit::TestCase + ENCS = [ + Encoding::ASCII_8BIT, + Encoding::EUC_JP, + Encoding::Shift_JIS, + Encoding::UTF_8 + ] + def with_tmpdir Dir.mktmpdir {|dir| - Dir.chdir dir - yield dir + Dir.chdir(dir) { + yield dir + } } end + def with_pipe(enc=nil) + r, w = IO.pipe(enc) + begin + yield r, w + ensure + r.close if !r.closed? + w.close if !w.closed? + end + end + def generate_file(path, content) open(path, "wb") {|f| f.write content } end @@ -39,12 +57,7 @@ with_tmpdir { src = "abc\n" generate_file('tmp', "abc\n") - [ - Encoding::ASCII_8BIT, - Encoding::EUC_JP, - Encoding::Shift_JIS, - Encoding::UTF_8 - ].each {|enc| + ENCS.each {|enc| s = open('tmp', "r:#{enc}") {|f| f.gets } assert_equal(enc, s.encoding) assert_str_equal(src, s) @@ -56,12 +69,7 @@ with_tmpdir { src = "\xc2\xa1\n" generate_file('tmp', src) - [ - Encoding::ASCII_8BIT, - Encoding::EUC_JP, - Encoding::Shift_JIS, - Encoding::UTF_8 - ].each {|enc| + ENCS.each {|enc| content = src.dup.force_encoding(enc) s = open('tmp', "r:#{enc}") {|f| f.gets } assert_equal(enc, s.encoding) @@ -74,12 +82,7 @@ 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| + ENCS.each {|enc| content = src.dup.force_encoding(enc) open('tmp', "r:#{enc}") {|f| s = f.getc @@ -140,25 +143,19 @@ def test_write_noenc src = "\xc2\xa1\n" - encs = [ - Encoding::ASCII_8BIT, - Encoding::EUC_JP, - Encoding::Shift_JIS, - Encoding::UTF_8 - ] with_tmpdir { open('tmp', "w") {|f| - encs.each {|enc| + ENCS.each {|enc| f.write src.dup.force_encoding(enc) } } open('tmp', 'rb') {|f| - assert_equal(src*encs.length, f.read) + assert_equal(src*ENCS.length, f.read) } } end - def test_write_enc + def test_write_conversion utf8 = "\u6666" eucjp = "\xb3\xa2".force_encoding("EUC-JP") with_tmpdir { @@ -174,5 +171,16 @@ } end + def test_pipe + ENCS.each {|enc| + with_pipe(enc) {|r, w| + w << "\xc2\xa1" + w.close + s = r.getc + assert_equal(enc, s.encoding) + } + } + end + end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml