Sha256: 1ecdbf79a3ae413cc315593fc22949a522f8676187a29ef7748d7be3275b5c80

Contents?: true

Size: 1.68 KB

Versions: 19

Compression:

Stored size: 1.68 KB

Contents

require 'test/unit'
require 'thread'
if RUBY_PLATFORM != "java"
  $:.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

  def check_serialization( k, *args )
    q1 = k.new *args
    %w(a b c d e f).each { |c| q1.push c }
    q2 = Marshal.load(Marshal.dump(q1))
    assert( ( q1.size == q2.size ), "queues are same size" )
    q1.size.times do
      assert( ( q1.pop == q2.pop ), "same data" )
    end
    [ q1, q2 ]
  end

  def test_queue_serialization
    check_serialization Queue
  end

  def test_sized_queue_serialization
    (q1, q2) = check_serialization SizedQueue, 20
    assert( ( q1.max == q2.max ), "maximum sizes equal" )
  end

  def test_sized_queue_size
    q = SizedQueue.new 3
    assert_equal 3, q.max, "queue has expected max (3)"
    q.max = 5
    assert_equal 5, q.max, "queue has expected max (5)"
  end
end 

Version data entries

19 entries across 19 versions & 4 rubygems

Version Path
blackwinter-fastthread-1.0.5 test/test_queue.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/fastthread-1.0.7/test/test_queue.rb
merb-core-1.1.3 spec10/public/webrat/test_app/gems/gems/fastthread-1.0.1/test/test_queue.rb
merb-core-1.1.2 spec10/public/webrat/test_app/gems/gems/fastthread-1.0.1/test/test_queue.rb
merb-core-1.1.1 spec10/public/webrat/test_app/gems/gems/fastthread-1.0.1/test/test_queue.rb
blackwinter-fastthread-1.0.7 test/test_queue.rb
merb-core-1.1.0 spec10/public/webrat/test_app/gems/gems/fastthread-1.0.1/test/test_queue.rb
merb-core-1.1.0.rc1 spec10/public/webrat/test_app/gems/gems/fastthread-1.0.1/test/test_queue.rb
merb-core-1.1.0.pre spec10/public/webrat/test_app/gems/gems/fastthread-1.0.1/test/test_queue.rb
fastthread-1.0.1-i386-mswin32 test/test_queue.rb
fastthread-0.6.4.1 test/test_queue.rb
fastthread-1.0.1 test/test_queue.rb
fastthread-1.0.4 test/test_queue.rb
fastthread-1.0.6 test/test_queue.rb
fastthread-1.0.5 test/test_queue.rb
fastthread-1.0.3 test/test_queue.rb
fastthread-0.6.3 test/test_queue.rb
fastthread-1.0.7 test/test_queue.rb
fastthread-1.0 test/test_queue.rb