| require 'test/unit' |
| require 'dbgp/ThreadEventHandler.rb' |
| |
| module XoredDebugger |
| class ThreadEventHandlerTest < Test::Unit::TestCase |
| include ThreadEventHandler |
| |
| def setup |
| Thread.set_event_handler(self) |
| end |
| |
| def teardown |
| Thread.set_event_handler(nil) |
| end |
| |
| def test_events |
| thread = Thread.new {} |
| thread.join |
| assert_equal(@last_started, thread) |
| assert_equal(@last_exited, thread) |
| assert_equal(@last_excpt, nil) |
| |
| excpt = nil |
| thread = Thread.new { |
| raise Exception |
| } |
| begin |
| thread.join |
| rescue Exception |
| excpt = $! |
| end |
| |
| assert_equal(@last_started, thread) |
| assert_equal(@last_exited, thread) |
| assert_not_equal(@last_excpt, nil) |
| |
| thread = Thread.new(1,2,3) { |
| |*args| @args = *args |
| } |
| thread.join |
| assert_equal([1,2,3], @args) |
| assert_equal(@last_started, thread) |
| assert_equal(@last_exited, thread) |
| assert_equal(@last_excpt, nil) |
| end |
| |
| def started() |
| @last_started = Thread.current |
| end |
| |
| def exited(excpt) |
| @last_exited = Thread.current |
| @last_excpt = excpt |
| end |
| end |
| end |