Sha256: 188bf197d62db7c072aaad7e77e673838ed5fbfd62cc5cc5b2f1047268ba7740

Contents?: true

Size: 1016 Bytes

Versions: 2

Compression:

Stored size: 1016 Bytes

Contents

require 'test/unit'
if RUBY_PLATFORM == "java"
  require 'thread'
else
  $:.unshift File.expand_path( File.join( File.dirname( __FILE__ ), "../ext/fastthread" ) )
  require 'fastthread'
end

class TestQueue < Test::Unit::TestCase
  def check_sequence( q )
    range = "a".."f"

    s = ""
    e = nil

    t = Thread.new do
      begin
        for c in range
          q.push c
          s << c
          Thread.pass
        end
      rescue Exception => e
      end
    end

    for c in range
      unless t.alive?
        raise e if e
        assert_equal range.to_a.join, s, "expected all values pushed"
      end
      x = q.shift
      assert_equal c, x, "sequence error: expected #{ c } but got #{ x }"
    end
  end

  def test_queue
    check_sequence( Queue.new )
  end

  def test_sized_queue_full
    check_sequence( SizedQueue.new( 6 ) )
  end

  def test_sized_queue_half
    check_sequence( SizedQueue.new( 3 ) )
  end

  def test_sized_queue_one
    check_sequence( SizedQueue.new( 1 ) )
  end
end 

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fastthread-0.6.1 test/test_queue.rb
fastthread-0.6 test/test_queue.rb