ruby/test/fiber/test_enumerator.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

46 строки
846 B
Ruby
Исходник Обычный вид История

# frozen_string_literal: true
require 'test/unit'
require_relative 'scheduler'
class TestFiberEnumerator < Test::Unit::TestCase
MESSAGE = "Hello World"
def test_read_characters
omit "UNIXSocket is not defined!" unless defined?(UNIXSocket)
i, o = UNIXSocket.pair
2020-07-16 06:19:47 +03:00
message = String.new
thread = Thread.new do
scheduler = Scheduler.new
2020-10-16 04:25:58 +03:00
Fiber.set_scheduler scheduler
e = i.to_enum(:each_char)
Fiber.schedule do
o.write("Hello World")
o.close
end
Fiber.schedule do
begin
while c = e.next
message << c
end
rescue StopIteration
# Ignore.
end
i.close
end
end
thread.join
assert_equal(MESSAGE, message)
assert_predicate(i, :closed?)
assert_predicate(o, :closed?)
end
end