diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-27 13:22:40 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-27 13:22:40 +0000 |
commit | 8252adfd5a6020a8b3dad173f71e9012ba5c6acf (patch) | |
tree | 4a61954426334085fd52726bfc1a18c69bbe884b | |
parent | 0d76affdf905a72a6bcb25530ca13468bc36a0bc (diff) | |
download | ruby-8252adfd5a6020a8b3dad173f71e9012ba5c6acf.tar.gz |
* 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
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ext/stringio/stringio.c | 2 | ||||
-rw-r--r-- | test/stringio/test_stringio.rb | 40 |
3 files changed, 46 insertions, 1 deletions
@@ -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. diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index ab4a78ce69..802c462b56 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -1410,6 +1410,7 @@ Init_stringio() rb_define_method(StringIO, "read", strio_read, -1); rb_define_method(StringIO, "sysread", 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, "<<", strio_addstr, 1); @@ -1418,6 +1419,7 @@ Init_stringio() rb_define_method(StringIO, "putc", strio_putc, 1); rb_define_method(StringIO, "puts", strio_puts, -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, "tty?", strio_isatty, 0); diff --git a/test/stringio/test_stringio.rb b/test/stringio/test_stringio.rb index 212315ae10..63647683ca 100644 --- a/test/stringio/test_stringio.rb +++ b/test/stringio/test_stringio.rb @@ -87,6 +87,28 @@ class TestStringIO < Test::Unit::TestCase f.close unless f.closed? 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 f = StringIO.new("", "r") 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)) 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 f = StringIO.new("1234") assert_equal(4, f.size) |