Skip to content

Commit 3a8e81c

Browse files
committed
Add failing test case.
1 parent 1c1f0fa commit 3a8e81c

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

test/io/event/selector/buffered_io.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,46 @@
7777
writer.transfer
7878
selector.select(0)
7979
end
80+
81+
it "can perform non-blocking read" do
82+
skip_if_ruby_platform(/mswin|mingw|cygwin/)
83+
84+
buffer = IO::Buffer.new(64)
85+
result = nil
86+
87+
output.puts "Hello World\n"
88+
output.close
89+
90+
reader = Fiber.new do
91+
result = selector.io_read(Fiber.current, input, buffer, 0)
92+
end
93+
94+
reader.transfer
95+
selector.select(0)
96+
97+
expect(buffer.get_string(0, 12)).to be == "Hello World\n"
98+
end
99+
100+
# Whether the given error code indicates that the operation should be retried.
101+
def be_again?
102+
(be == -Errno::EAGAIN::Errno).or(be == -Errno::EWOULDBLOCK::Errno)
103+
end
104+
105+
it "can perform non-blocking read with empty input" do
106+
skip_if_ruby_platform(/mswin|mingw|cygwin/)
107+
108+
buffer = IO::Buffer.new(64)
109+
result = nil
110+
111+
reader = Fiber.new do
112+
result = selector.io_read(Fiber.current, input, buffer, 0)
113+
end
114+
115+
reader.transfer
116+
selector.select(0)
117+
118+
expect(result).to be_again?
119+
end
80120
end
81121
end
82122

0 commit comments

Comments
 (0)