summaryrefslogtreecommitdiff
path: root/test/ruby/test_io_m17n.rb
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-24 05:42:50 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-24 05:42:50 +0000
commit78db46b31c4472291f4e45cf0374853ac3c5740a (patch)
treeb192bb6730f4a59338bda792267c3fb6909742f7 /test/ruby/test_io_m17n.rb
parent7309f9cc007f1cc05eb70967356069161d867356 (diff)
* io.c: raise IOError when byte oriented operations occur with
non-empty character buffer. [ruby-dev:40493] [ruby-dev:40506] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_io_m17n.rb')
-rw-r--r--test/ruby/test_io_m17n.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb
index 1220170e1b..98a52939d0 100644
--- a/test/ruby/test_io_m17n.rb
+++ b/test/ruby/test_io_m17n.rb
@@ -1741,5 +1741,38 @@ EOT
end
}
end
+
+ def test_cbuf
+ with_tmpdir {
+ fn = "tst"
+ open(fn, "w") {|f| f.print "foo" }
+ open(fn, "r+t") {|f|
+ f.ungetc(f.getc)
+ assert_raise(IOError, "[ruby-dev:40493]") { f.readpartial(2) }
+ assert_raise(IOError) { f.read(2) }
+ assert_raise(IOError) { f.each_byte {|c| } }
+ assert_raise(IOError) { f.getbyte }
+ assert_raise(IOError) { f.ungetbyte(0) }
+ assert_raise(IOError) { f.sysread(2) }
+ assert_raise(IOError) { IO.copy_stream(f, "tmpout") }
+ assert_raise(IOError) { f.sysseek(2) }
+ }
+ open(fn, "r+t") {|f|
+ f.ungetc(f.getc)
+ assert_equal("foo", f.read)
+ }
+ }
+ end
+
+ def test_text_mode_ungetc_eof
+ with_tmpdir {
+ open("ff", "w") {|f| }
+ open("ff", "rt") {|f|
+ f.ungetc "a"
+ assert(!f.eof?, "[ruby-dev:40506] (3)")
+ }
+ }
+ end
+
end