summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-31 07:19:24 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-31 07:19:24 +0000
commit67d66b2652a955c8dfcf2377f2842e1c413e0939 (patch)
tree70a5772aee3d1ad1e8915b96923aadb642a6f708 /test
parentef2ff2776b8c7b4d73e0820e7821ee41981ee69e (diff)
* io.c (copy_stream_body): don't check to_io because
Zlib::GzipWriter#to_io returns the underlying IO. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_io.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb
index c3fbbd6905..708e25d766 100644
--- a/test/ruby/test_io.rb
+++ b/test/ruby/test_io.rb
@@ -567,6 +567,69 @@ class TestIO < Test::Unit::TestCase
}
end
+ class Rot13IO
+ def initialize(io)
+ @io = io
+ end
+
+ def readpartial(*args)
+ ret = @io.readpartial(*args)
+ ret.tr!('a-zA-Z', 'n-za-mN-ZA-M')
+ ret
+ end
+
+ def write(str)
+ @io.write(str.tr('a-zA-Z', 'n-za-mN-ZA-M'))
+ end
+
+ def to_io
+ @io
+ end
+ end
+
+ def test_copy_stream_io_to_rot13
+ mkcdtmpdir {
+ File.open("bar", "w") {|f| f << "vex" }
+ File.open("bar") {|src|
+ File.open("baz", "w") {|dst0|
+ dst = Rot13IO.new(dst0)
+ ret = IO.copy_stream(src, dst, 3)
+ assert_equal(3, ret)
+ }
+ assert_equal("irk", File.read("baz"))
+ }
+ }
+ end
+
+ def test_copy_stream_rot13_to_io
+ mkcdtmpdir {
+ File.open("bar", "w") {|f| f << "flap" }
+ File.open("bar") {|src0|
+ src = Rot13IO.new(src0)
+ File.open("baz", "w") {|dst|
+ ret = IO.copy_stream(src, dst, 4)
+ assert_equal(4, ret)
+ }
+ }
+ assert_equal("sync", File.read("baz"))
+ }
+ end
+
+ def test_copy_stream_rot13_to_rot13
+ mkcdtmpdir {
+ File.open("bar", "w") {|f| f << "bin" }
+ File.open("bar") {|src0|
+ src = Rot13IO.new(src0)
+ File.open("baz", "w") {|dst0|
+ dst = Rot13IO.new(dst0)
+ ret = IO.copy_stream(src, dst, 3)
+ assert_equal(3, ret)
+ }
+ }
+ assert_equal("bin", File.read("baz"))
+ }
+ end
+
def test_copy_stream_strio_flush
with_pipe {|r, w|
w.sync = false