Sha256: cc1ae4f69b93fdf92c3e2da73bb497f5d564373f6d32c0ed2c260d579b75938a

Contents?: true

Size: 1000 Bytes

Versions: 2

Compression:

Stored size: 1000 Bytes

Contents

# frozen_string_literal: true
require 'bundler/setup'
require 'minitest/autorun'
require 'minitest/reporters'
require 'libev_scheduler'

class TestFiberSleep < MiniTest::Test
  ITEMS = [0, 1, 2, 3, 4]

  def setup
    sleep 0.1
  end

  def test_sleep
    items = []

    thread = Thread.new do
      scheduler = Libev::Scheduler.new
      Fiber.set_scheduler scheduler

      5.times do |i|
        Fiber.schedule do
          assert_operator sleep(i/100.0), :>=, 0
          items << i
        end
      end
    end

    thread.join

    assert_equal ITEMS, items
  end

  def test_sleep_returns_seconds_slept
    seconds = nil
    t0 = Time.now

    thread = Thread.new do
      scheduler = Libev::Scheduler.new
      Fiber.set_scheduler scheduler
      Fiber.schedule do
        seconds = sleep(1)
      end
    end

    thread.join
    elapsed = Time.now - t0

    assert_operator seconds, :>=, 1.0, "actual: %p" % seconds
    assert_operator elapsed, :>=, 1.0, "actual: %p" % elapsed
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
libev_scheduler-0.2 test/test_sleep.rb
libev_scheduler-0.1 test/test_sleep.rb