1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/stringio/stringio.c (Init_stringio): added read_nonblock and

write_nonblock aliases.  [ruby-dev:39551]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-10-27 13:22:40 +00:00
parent 0d76affdf9
commit 8252adfd5a
3 changed files with 46 additions and 1 deletions

View file

@ -1,4 +1,7 @@
Tue Oct 27 22:14:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> Tue Oct 27 22:22:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (Init_stringio): added read_nonblock and
write_nonblock aliases. [ruby-dev:39551]
* ext/stringio/stringio.c (strio_data_type): typed. * ext/stringio/stringio.c (strio_data_type): typed.

View file

@ -1410,6 +1410,7 @@ Init_stringio()
rb_define_method(StringIO, "read", strio_read, -1); rb_define_method(StringIO, "read", strio_read, -1);
rb_define_method(StringIO, "sysread", strio_sysread, -1); rb_define_method(StringIO, "sysread", strio_sysread, -1);
rb_define_method(StringIO, "readpartial", strio_sysread, -1); rb_define_method(StringIO, "readpartial", strio_sysread, -1);
rb_define_method(StringIO, "read_nonblock", strio_sysread, -1);
rb_define_method(StringIO, "write", strio_write, 1); rb_define_method(StringIO, "write", strio_write, 1);
rb_define_method(StringIO, "<<", strio_addstr, 1); rb_define_method(StringIO, "<<", strio_addstr, 1);
@ -1418,6 +1419,7 @@ Init_stringio()
rb_define_method(StringIO, "putc", strio_putc, 1); rb_define_method(StringIO, "putc", strio_putc, 1);
rb_define_method(StringIO, "puts", strio_puts, -1); rb_define_method(StringIO, "puts", strio_puts, -1);
rb_define_method(StringIO, "syswrite", strio_syswrite, 1); rb_define_method(StringIO, "syswrite", strio_syswrite, 1);
rb_define_method(StringIO, "write_nonblock", strio_syswrite, 1);
rb_define_method(StringIO, "isatty", strio_isatty, 0); rb_define_method(StringIO, "isatty", strio_isatty, 0);
rb_define_method(StringIO, "tty?", strio_isatty, 0); rb_define_method(StringIO, "tty?", strio_isatty, 0);

View file

@ -87,6 +87,28 @@ class TestStringIO < Test::Unit::TestCase
f.close unless f.closed? f.close unless f.closed?
end end
def test_write_nonblock
s = ""
f = StringIO.new(s, "w")
f.write_nonblock("foo")
f.close
assert_equal("foo", s)
f = StringIO.new(s, File::WRONLY)
f.write_nonblock("bar")
f.close
assert_equal("bar", s)
f = StringIO.new(s, "a")
o = Object.new
def o.to_s; "baz"; end
f.write_nonblock(o)
f.close
assert_equal("barbaz", s)
ensure
f.close unless f.closed?
end
def test_mode_error def test_mode_error
f = StringIO.new("", "r") f = StringIO.new("", "r")
assert_raise(IOError) { f.write("foo") } assert_raise(IOError) { f.write("foo") }
@ -390,6 +412,24 @@ class TestStringIO < Test::Unit::TestCase
assert_equal("\u3042\u3044".force_encoding(Encoding::ASCII_8BIT), f.read(f.size)) assert_equal("\u3042\u3044".force_encoding(Encoding::ASCII_8BIT), f.read(f.size))
end end
def test_readpartial
f = StringIO.new("\u3042\u3044")
assert_raise(ArgumentError) { f.readpartial(-1) }
assert_raise(ArgumentError) { f.readpartial(1, 2, 3) }
assert_equal("\u3042\u3044", f.readpartial)
f.rewind
assert_equal("\u3042\u3044".force_encoding(Encoding::ASCII_8BIT), f.readpartial(f.size))
end
def test_read_nonblock
f = StringIO.new("\u3042\u3044")
assert_raise(ArgumentError) { f.read_nonblock(-1) }
assert_raise(ArgumentError) { f.read_nonblock(1, 2, 3) }
assert_equal("\u3042\u3044", f.read_nonblock)
f.rewind
assert_equal("\u3042\u3044".force_encoding(Encoding::ASCII_8BIT), f.read_nonblock(f.size))
end
def test_size def test_size
f = StringIO.new("1234") f = StringIO.new("1234")
assert_equal(4, f.size) assert_equal(4, f.size)