diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
commit | d0233291bc8a5068e52c69c210e5979e5324b5bc (patch) | |
tree | 7d9459449c33792c63eeb7baa071e76352e0baab /trunk/test/monitor/test_monitor.rb | |
parent | 0dc342de848a642ecce8db697b8fecd83a63e117 (diff) | |
parent | 72eaacaa15256ab95c3b52ea386f88586fb9da40 (diff) |
re-adding tag v1_9_0_4 as an alias of trunk@18848v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/test/monitor/test_monitor.rb')
-rw-r--r-- | trunk/test/monitor/test_monitor.rb | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/trunk/test/monitor/test_monitor.rb b/trunk/test/monitor/test_monitor.rb deleted file mode 100644 index 064471eecb..0000000000 --- a/trunk/test/monitor/test_monitor.rb +++ /dev/null @@ -1,163 +0,0 @@ -require "monitor" -require "thread" - -require "test/unit" - -class TestMonitor < Test::Unit::TestCase - def setup - @monitor = Monitor.new - end - - def test_enter - ary = [] - queue = Queue.new - th = Thread.start { - queue.pop - @monitor.enter - for i in 6 .. 10 - ary.push(i) - Thread.pass - end - @monitor.exit - } - @monitor.enter - queue.enq(nil) - for i in 1 .. 5 - ary.push(i) - Thread.pass - end - @monitor.exit - th.join - assert_equal((1..10).to_a, ary) - end - - def test_synchronize - ary = [] - queue = Queue.new - th = Thread.start { - queue.pop - @monitor.synchronize do - for i in 6 .. 10 - ary.push(i) - Thread.pass - end - end - } - @monitor.synchronize do - queue.enq(nil) - for i in 1 .. 5 - ary.push(i) - Thread.pass - end - end - th.join - assert_equal((1..10).to_a, ary) - end - - def test_try_enter - queue1 = Queue.new - queue2 = Queue.new - th = Thread.start { - queue1.deq - @monitor.enter - queue2.enq(nil) - queue1.deq - @monitor.exit - queue2.enq(nil) - } - assert_equal(true, @monitor.try_enter) - @monitor.exit - queue1.enq(nil) - queue2.deq - assert_equal(false, @monitor.try_enter) - queue1.enq(nil) - queue2.deq - assert_equal(true, @monitor.try_enter) - end - - def test_cond - cond = @monitor.new_cond - - a = "foo" - queue1 = Queue.new - Thread.start do - queue1.deq - @monitor.synchronize do - a = "bar" - cond.signal - end - end - @monitor.synchronize do - queue1.enq(nil) - assert_equal("foo", a) - result1 = cond.wait - assert_equal(true, result1) - assert_equal("bar", a) - end - end - - def _test_timedwait - b = "foo" - queue2 = Queue.new - Thread.start do - queue2.deq - @monitor.synchronize do - b = "bar" - cond.signal - end - end - @monitor.synchronize do - queue2.enq(nil) - assert_equal("foo", b) - result2 = cond.wait(0.1) - assert_equal(true, result2) - assert_equal("bar", b) - end - - c = "foo" - queue3 = Queue.new - Thread.start do - queue3.deq - @monitor.synchronize do - c = "bar" - cond.signal - end - end - @monitor.synchronize do - assert_equal("foo", c) - result3 = cond.wait(0.1) - assert_equal(false, result3) - assert_equal("foo", c) - queue3.enq(nil) - result4 = cond.wait - assert_equal(true, result4) - assert_equal("bar", c) - end - -# d = "foo" -# cumber_thread = Thread.start { -# loop do -# @monitor.synchronize do -# d = "foo" -# end -# end -# } -# queue3 = Queue.new -# Thread.start do -# queue3.pop -# @monitor.synchronize do -# d = "bar" -# cond.signal -# end -# end -# @monitor.synchronize do -# queue3.enq(nil) -# assert_equal("foo", d) -# result5 = cond.wait -# assert_equal(true, result5) -# # this thread has priority over cumber_thread -# assert_equal("bar", d) -# end -# cumber_thread.kill - end -end |