diff options
Diffstat (limited to 'test/test_posix_mq.rb')
-rw-r--r-- | test/test_posix_mq.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/test_posix_mq.rb b/test/test_posix_mq.rb index 1cc24aa..54c7223 100644 --- a/test/test_posix_mq.rb +++ b/test/test_posix_mq.rb @@ -17,6 +17,8 @@ class Test_POSIX_MQ < Test::Unit::TestCase warn "POSIX_MQ#to_io not supported on this platform: #{RUBY_PLATFORM}" POSIX_MQ.method_defined?(:notify) or warn "POSIX_MQ#notify not supported on this platform: #{RUBY_PLATFORM}" + POSIX_MQ.respond_to?(:for_fd) or + warn "POSIX_MQ::for_fd not supported on this platform: #{RUBY_PLATFORM}" def setup @mq = nil @@ -244,6 +246,18 @@ class Test_POSIX_MQ < Test::Unit::TestCase assert_nothing_raised { IO.select([@mq], nil, nil, 0) } end if POSIX_MQ.method_defined?(:to_io) + def test_for_fd + buf = "" + @mq = POSIX_MQ.new @path, IO::CREAT|IO::RDWR, 0666 + @alt = POSIX_MQ.for_fd(@mq.to_io.to_i) + assert_equal true, @mq.send("hello", 0) + assert_equal [ "hello", 0 ], @alt.receive(buf) + assert_equal "hello", buf + assert_equal @mq.to_io.to_i, @alt.to_io.to_i + assert_raises(ArgumentError) { @alt.name } + assert_raises(Errno::EBADF) { POSIX_MQ.for_fd(1) } + end if POSIX_MQ.respond_to?(:for_fd) && POSIX_MQ.method_defined?(:to_io) + def test_notify rd, wr = IO.pipe orig = trap(:USR1) { wr.syswrite('.') } |