Sha256: 22ccc2f80d83f8579431aa287a0eb547689e12d5ca4b5c7ea3c2ebc132d497fd

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

require 'test_helper'

class MqueueTest < MiniTest::Unit::TestCase
  def setup
    @queue_name = "/test-queue"
    @queue = POSIX::Mqueue.new(@queue_name)
  end

  def teardown
    @queue.unlink
  end

  def test_send_and_receive_single_message
    @queue.send "hello"
    assert_equal "hello", @queue.receive
  end

  def test_send_and_receive_multiple_messages
    @queue.send "hello"
    @queue.send "world"

    assert_equal "hello", @queue.receive
    assert_equal "world", @queue.receive
  end

  def test_receiver_blocks
    @queue.send "hello"

    assert_equal "hello", @queue.receive

    fork { POSIX::Mqueue.new(@queue_name).send("world") }

    assert_equal "world", @queue.receive
  end

  def test_multiple_queues
    @queue.send "hello"

    other = POSIX::Mqueue.new("/other-test-queue")
    other.send "world"

    assert_equal "world", other.receive
    assert_equal "hello", @queue.receive

    other.unlink
  end

  def test_timedsend_raises_exception_instead_of_blocking
    10.times { @queue.timedsend 0, 0, "walrus" }

    assert_raises POSIX::Mqueue::QueueFull do
      @queue.timedsend(0, 0, "hi")
    end
  end

  def test_timedreceive_raises_exception_instead_of_blocking
    assert_raises POSIX::Mqueue::QueueEmpty do
      @queue.timedreceive(0, 0)
    end
  end

  def test_errors_when_queue_name_is_not_slash_prefixed
    assert_raises Errno::EINVAL do
      POSIX::Mqueue.new("notvalid")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
posix-mqueue-0.0.4 test/mqueue_test.rb