diff --git a/test/ruby/test_flip.rb b/test/ruby/test_flip.rb index bd14228a8c..fc62d93ae6 100644 --- a/test/ruby/test_flip.rb +++ b/test/ruby/test_flip.rb @@ -18,4 +18,25 @@ class TestFlip < Test::Unit::TestCase v = eval("vs.select {|n| if n==3..n==6 then 1 end}") assert_equal([*3..6], v, bug7671) end + + def test_shared_thread + ff = proc {|n| true if n==3..n==5} + v = 1..9 + a = true + th = Thread.new { + v.select {|i| + Thread.pass while a + ff[i].tap {a = true} + } + } + v1 = v.select {|i| + Thread.pass until a + ff[i].tap {a = false} + } + v2 = th.value + expected = [3, 4, 5] + mesg = 'flip-flop should be separated per threads' + assert_equal(expected, v1, mesg) + assert_equal(expected, v2, mesg) + end end