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]