[前][次][番号順一覧][スレッド一覧]

ruby-changes:3042

From: ko1@a...
Date: 24 Dec 2007 01:10:48 +0900
Subject: [ruby-changes:3042] akr - Ruby:r14534 (trunk): more IO m17n tests.

akr	2007-12-24 01:10:36 +0900 (Mon, 24 Dec 2007)

  New Revision: 14534

  Modified files:
    trunk/test/ruby/test_io_m17n.rb

  Log:
    more IO m17n tests.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_io_m17n.rb?r1=14534&r2=14533

Index: test/ruby/test_io_m17n.rb
===================================================================
--- test/ruby/test_io_m17n.rb	(revision 14533)
+++ test/ruby/test_io_m17n.rb	(revision 14534)
@@ -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 @@
     }
   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
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]