Sha256: acc4ad9e5714c82cbcd1372b498b586e347a81182613bc40e07d47e2992c76d7

Contents?: true

Size: 965 Bytes

Versions: 48

Compression:

Stored size: 965 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

48 entries across 48 versions & 1 rubygems

Version Path
polyphony-0.71 test/test_event.rb
polyphony-0.70 test/test_event.rb
polyphony-0.69 test/test_event.rb
polyphony-0.68 test/test_event.rb
polyphony-0.67 test/test_event.rb
polyphony-0.66 test/test_event.rb
polyphony-0.65 test/test_event.rb
polyphony-0.64 test/test_event.rb
polyphony-0.63 test/test_event.rb
polyphony-0.62 test/test_event.rb
polyphony-0.61 test/test_event.rb
polyphony-0.60 test/test_event.rb
polyphony-0.59.1 test/test_event.rb
polyphony-0.59 test/test_event.rb
polyphony-0.58 test/test_event.rb
polyphony-0.57.0 test/test_event.rb
polyphony-0.56.0 test/test_event.rb
polyphony-0.55.0 test/test_event.rb
polyphony-0.54.0 test/test_event.rb
polyphony-0.53.2 test/test_event.rb