From: Tanaka Akira Date: 2003-12-24T00:41:21+09:00 Subject: [ruby-dev:22351] Re: yet another inconsistency about EOF between StringIO and IO In article <200312231455.hBNEtJkM012849@sharui.nakada.kanuma.tochigi.jp>, nobu.nakada@nifty.ne.jp writes: > StringIO側でまずい動作はどの部分なんでしょうか。どういう条件で > どういう動作をすべきかがよく分かってないのですが、例えばテスト > ケースなどがあればできなくはないと思います。 assert_nil(f.read) を assert_equal("", f.read) に機械的に変えるだけだ とテストはこんな感じですかね。 これですべての状態を網羅しているかというと怪しい所ですが。 Index: test/ruby/ut_eof.rb =================================================================== RCS file: /src/ruby/test/ruby/ut_eof.rb,v retrieving revision 1.5 diff -u -r1.5 ut_eof.rb --- test/ruby/ut_eof.rb 10 Dec 2003 10:29:00 -0000 1.5 +++ test/ruby/ut_eof.rb 23 Dec 2003 15:31:22 -0000 @@ -11,7 +11,7 @@ } open_file("") {|f| assert_nil(f.read(1)) - assert_nil(f.read) + assert_equal("", f.read) assert_nil(f.read(1)) } end @@ -20,9 +20,9 @@ return unless respond_to? :open_file_rw open_file_rw("") {|f| assert_equal("", f.read) - assert_nil(f.read) + assert_equal("", f.read) assert_equal(0, f.syswrite("")) - assert_nil(f.read) + assert_equal("", f.read) } end @@ -43,19 +43,19 @@ open_file("a") {|f| assert_equal("a", f.read(2)) assert_nil(f.read(1)) - assert_nil(f.read) + assert_equal("", f.read) assert_nil(f.read(1)) } open_file("a") {|f| assert_equal("a", f.read) assert_nil(f.read(1)) - assert_nil(f.read) + assert_equal("", f.read) assert_nil(f.read(1)) } open_file("a") {|f| assert_equal("a", f.read(2)) - assert_nil(f.read) - assert_nil(f.read) + assert_equal("", f.read) + assert_equal("", f.read) } open_file("a") {|f| assert_equal("a", f.read) @@ -77,18 +77,18 @@ assert_equal("", f.read(0)) assert_equal("", f.read) assert_nil(f.read(0)) - assert_nil(f.read) + assert_equal("", f.read) } end def test_eof_1_seek open_file_seek("a", 10) {|f| assert_equal("", f.read) - assert_nil(f.read) + assert_equal("", f.read) } open_file_seek("a", 1) {|f| assert_equal("", f.read) - assert_nil(f.read) + assert_equal("", f.read) } end end -- [田中 哲][たなか あきら][Tanaka Akira]