Sha256: 1308f6be0e90b9b214425d5cb91aa966769c6a7ae7b7d604720fb48b7709aef3

Contents?: true

Size: 962 Bytes

Versions: 46

Compression:

Stored size: 962 Bytes

Contents

# frozen_string_literal: true

require_relative 'helper'

class EventTest < MiniTest::Test
  def test_that_event_receives_signal_across_threads
    count = 0
    a = Polyphony::Event.new
    spin {
      a.await
      count += 1
    }
    snooze
    t = Thread.new do
      orig_sleep 0.001
      a.signal
    end
    suspend
    assert_equal 1, count
  ensure
    t&.kill
    t&.join
  end

  def test_that_event_coalesces_signals
    count = 0
    a = Polyphony::Event.new

    coproc = spin {
      loop {
        a.await
        count += 1
        spin { coproc.stop }
      }
    }
    snooze

    t = Thread.new do
      orig_sleep 0.001
      3.times { a.signal }
    end

    coproc.await
    assert_equal 1, count
  ensure
    t&.kill
    t&.join
  end

  def test_exception_while_waiting_for_event
    e = Polyphony::Event.new

    f = spin { e.await }
    g = spin { f.raise 'foo' }

    assert_raises(RuntimeError) do
      f.await
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
polyphony-1.5 test/test_event.rb
polyphony-1.4 test/test_event.rb
polyphony-1.3 test/test_event.rb
polyphony-1.2.1 test/test_event.rb
polyphony-1.2 test/test_event.rb
polyphony-1.1.1 test/test_event.rb
polyphony-1.1 test/test_event.rb
polyphony-1.0.2 test/test_event.rb
polyphony-1.0.1 test/test_event.rb
polyphony-1.0 test/test_event.rb
polyphony-0.99.6 test/test_event.rb
polyphony-0.99.5 test/test_event.rb
polyphony-0.99.4 test/test_event.rb
polyphony-0.99.3 test/test_event.rb
polyphony-0.99.2 test/test_event.rb
polyphony-0.99.1 test/test_event.rb
polyphony-0.99 test/test_event.rb
polyphony-0.98 test/test_event.rb
polyphony-0.97 test/test_event.rb
polyphony-0.96 test/test_event.rb