--- /dev/null
+$:.unshift "../lib"\r
+require 'eventmachine'\r
+require 'test/unit'\r
+\r
+class TestEventMachineQueue < Test::Unit::TestCase\r
+ def test_queue_push\r
+ s = 0\r
+ EM.run do\r
+ q = EM::Queue.new\r
+ q.push(1)\r
+ EM.next_tick { s = q.size; EM.stop }\r
+ end\r
+ assert_equal 1, s\r
+ end\r
+\r
+ def test_queue_pop\r
+ x,y,z = nil\r
+ EM.run do\r
+ q = EM::Queue.new\r
+ q.push(1,2,3)\r
+ q.pop { |v| x = v }\r
+ q.pop { |v| y = v }\r
+ q.pop { |v| z = v; EM.stop }\r
+ end\r
+ assert_equal 1, x\r
+ assert_equal 2, y\r
+ assert_equal 3, z\r
+ end\r
+\r
+ def test_queue_reactor_thread\r
+ q = EM::Queue.new\r
+\r
+ Thread.new { q.push(1,2,3) }.join\r
+ assert q.empty?\r
+ EM.run { EM.next_tick { EM.stop } }\r
+ assert_equal 3, q.size\r
+\r
+ x = nil\r
+ Thread.new { q.pop { |v| x = v } }.join\r
+ assert_equal nil, x\r
+ EM.run { EM.next_tick { EM.stop } }\r
+ assert_equal 1, x\r
+ end\r
+end\r