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:
parent
0d76affdf9
commit
8252adfd5a
3 changed files with 46 additions and 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.
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue