Sha256: f1dbfea90ed733e295eb9c0b21d59aca84e582671de290a532d9b61d14971569

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

require 'spec_helper'
require 'message_bus/timer_thread'

describe MessageBus::TimerThread do
  before do
    @timer = MessageBus::TimerThread.new
  end

  after do
    @timer.stop
  end

  it "allows you to queue every jobs" do
    i = 0
    m = Mutex.new
    every = @timer.every(0.001){m.synchronize{i += 1}}
    # allow lots of time, cause in test mode stuff can be slow
    wait_for(1000) do
      m.synchronize do
        every.cancel if i == 3
        i == 3
      end
    end
    sleep 0.002
    i.should == 3
  end

  it "allows you to cancel timers" do
    success = true
    @timer.queue(0.005){success=false}.cancel
    sleep(0.006)
    success.should == true
  end

  it "queues jobs in the correct order" do

    results = []
    (0..3).to_a.reverse.each do |i|
      @timer.queue(0.005 * i) do
        results << i
      end
    end

    wait_for(3000) {
      4 == results.length
    }

    results.should == [0,1,2,3]
  end

  it "should call the error callback if something goes wrong" do
    error = nil

    @timer.queue do
      boom
    end

    @timer.on_error do |e|
      error = e
    end

    @timer.queue do
      boom
    end

    wait_for(10) do
      error
    end

    error.class.should == NameError
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
message_bus-2.0.0.beta.2 spec/lib/message_bus/timer_thread_spec.rb
message_bus-2.0.0.beta.1 spec/lib/message_bus/timer_thread_spec.rb